ransack 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +40 -22
- data/CHANGELOG.md +176 -27
- data/CONTRIBUTING.md +30 -19
- data/Gemfile +8 -3
- data/README.md +131 -58
- data/Rakefile +5 -2
- data/lib/ransack.rb +10 -5
- data/lib/ransack/adapters.rb +43 -23
- data/lib/ransack/adapters/active_record.rb +2 -2
- data/lib/ransack/adapters/active_record/3.0/compat.rb +5 -5
- data/lib/ransack/adapters/active_record/3.0/context.rb +5 -3
- data/lib/ransack/adapters/active_record/3.1/context.rb +1 -4
- data/lib/ransack/adapters/active_record/base.rb +12 -1
- data/lib/ransack/adapters/active_record/context.rb +148 -55
- data/lib/ransack/adapters/active_record/ransack/constants.rb +53 -53
- data/lib/ransack/adapters/active_record/ransack/context.rb +3 -1
- data/lib/ransack/adapters/active_record/ransack/nodes/condition.rb +20 -28
- data/lib/ransack/adapters/mongoid/base.rb +21 -6
- data/lib/ransack/adapters/mongoid/context.rb +9 -5
- data/lib/ransack/configuration.rb +24 -3
- data/lib/ransack/constants.rb +11 -22
- data/lib/ransack/context.rb +20 -13
- data/lib/ransack/helpers/form_builder.rb +5 -6
- data/lib/ransack/helpers/form_helper.rb +50 -69
- data/lib/ransack/locale/da.yml +70 -0
- data/lib/ransack/locale/id.yml +70 -0
- data/lib/ransack/locale/ja.yml +70 -0
- data/lib/ransack/locale/pt-BR.yml +70 -0
- data/lib/ransack/locale/{zh.yml → zh-CN.yml} +1 -1
- data/lib/ransack/locale/zh-TW.yml +70 -0
- data/lib/ransack/nodes.rb +1 -1
- data/lib/ransack/nodes/attribute.rb +4 -1
- data/lib/ransack/nodes/bindable.rb +18 -6
- data/lib/ransack/nodes/condition.rb +58 -28
- data/lib/ransack/nodes/grouping.rb +15 -4
- data/lib/ransack/nodes/sort.rb +9 -5
- data/lib/ransack/predicate.rb +6 -2
- data/lib/ransack/search.rb +6 -5
- data/lib/ransack/translate.rb +2 -2
- data/lib/ransack/version.rb +1 -1
- data/ransack.gemspec +4 -4
- data/spec/mongoid/adapters/mongoid/base_spec.rb +20 -1
- data/spec/mongoid/nodes/condition_spec.rb +15 -0
- data/spec/mongoid/support/mongoid.yml +5 -0
- data/spec/mongoid/support/schema.rb +4 -0
- data/spec/mongoid_spec_helper.rb +13 -9
- data/spec/ransack/adapters/active_record/base_spec.rb +249 -71
- data/spec/ransack/adapters/active_record/context_spec.rb +16 -18
- data/spec/ransack/helpers/form_builder_spec.rb +5 -2
- data/spec/ransack/helpers/form_helper_spec.rb +84 -14
- data/spec/ransack/nodes/condition_spec.rb +24 -0
- data/spec/ransack/nodes/grouping_spec.rb +56 -0
- data/spec/ransack/predicate_spec.rb +5 -5
- data/spec/ransack/search_spec.rb +79 -70
- data/spec/support/schema.rb +43 -29
- metadata +17 -12
data/README.md
CHANGED
@@ -29,18 +29,18 @@ instead.
|
|
29
29
|
If you're viewing this at
|
30
30
|
[github.com/activerecord-hackery/ransack](https://github.com/activerecord-hackery/ransack),
|
31
31
|
you're reading the documentation for the master branch with the latest features.
|
32
|
-
[View documentation for the last release (1.
|
32
|
+
[View documentation for the last release (1.8.0).](https://github.com/activerecord-hackery/ransack/tree/v1.8.0)
|
33
33
|
|
34
34
|
## Getting started
|
35
35
|
|
36
|
-
Ransack is compatible with Rails 3 and
|
37
|
-
|
36
|
+
Ransack is compatible with Rails 3, 4 and 5 on Ruby 1.9 and later.
|
37
|
+
JRuby 9 ought to work as well (see
|
38
38
|
[this](https://github.com/activerecord-hackery/polyamorous/issues/17)).
|
39
39
|
If you are using Ruby 1.8 or an earlier JRuby and run into compatibility
|
40
40
|
issues, you can use an earlier version of Ransack, say, up to 1.3.0.
|
41
41
|
|
42
42
|
Ransack works out-of-the-box with Active Record and also features limited
|
43
|
-
support for Mongoid 4
|
43
|
+
support for Mongoid 4 and 5 (without associations, further details
|
44
44
|
[below](https://github.com/activerecord-hackery/ransack#mongoid)).
|
45
45
|
|
46
46
|
In your Gemfile, for the last officially released gem:
|
@@ -49,17 +49,25 @@ In your Gemfile, for the last officially released gem:
|
|
49
49
|
gem 'ransack'
|
50
50
|
```
|
51
51
|
|
52
|
-
|
52
|
+
If you would like to use the latest updates (recommended), use the `master`
|
53
|
+
branch:
|
53
54
|
|
54
55
|
```ruby
|
55
56
|
gem 'ransack', github: 'activerecord-hackery/ransack'
|
56
57
|
```
|
57
58
|
|
59
|
+
September 2015 update: If you are using Rails 5 (master) and need pagination
|
60
|
+
that works with Ransack, there is an
|
61
|
+
[updated version of the `will_paginate` gem here](https://github.com/jonatack/will_paginate).
|
62
|
+
It is also optimized for Ruby 2.2+. To use it, in your Gemfile:
|
63
|
+
`gem 'will_paginate', github: 'jonatack/will_paginate'`.
|
64
|
+
|
58
65
|
## Issues tracker
|
59
66
|
|
60
67
|
* Before filing an issue, please read the [Contributing Guide](CONTRIBUTING.md).
|
61
68
|
* File an issue if a bug is caused by Ransack, is new (has not already been reported), and _can be reproduced from the information you provide_.
|
62
69
|
* Contributions are welcome, but please do not add "+1" comments to issues or pull requests :smiley:
|
70
|
+
* Please do not use the issue tracker for personal support requests. Stack Overflow is a better place for that where a wider community can help you!
|
63
71
|
|
64
72
|
## Usage
|
65
73
|
|
@@ -86,22 +94,6 @@ If you're coming from MetaSearch, things to note:
|
|
86
94
|
ActiveRecord::Relation in the case of the ActiveRecord adapter) via a call to
|
87
95
|
`Ransack#result`.
|
88
96
|
|
89
|
-
4. If passed `distinct: true`, `result` will generate a `SELECT DISTINCT` to
|
90
|
-
avoid returning duplicate rows, even if conditions on a join would otherwise
|
91
|
-
result in some. It generates the same SQL as calling `uniq` on the relation.
|
92
|
-
|
93
|
-
Please note that for many databases, a sort on an associated table's columns
|
94
|
-
may result in invalid SQL with `distinct: true` -- in those cases, you're on
|
95
|
-
your own, and will need to modify the result as needed to allow these queries
|
96
|
-
to work.
|
97
|
-
|
98
|
-
If `distinct: true` or `uniq` is causing invalid SQL, another way to remove
|
99
|
-
duplicates is to call `to_a.uniq` on the collection at the end (see the next
|
100
|
-
section below) -- with the caveat that the de-duping is taking place in Ruby
|
101
|
-
instead of in SQL, which is potentially slower and uses more memory, and that
|
102
|
-
it may display awkwardly with pagination if the number of results is greater
|
103
|
-
than the page size.
|
104
|
-
|
105
97
|
####In your controller
|
106
98
|
|
107
99
|
```ruby
|
@@ -110,7 +102,7 @@ def index
|
|
110
102
|
@people = @q.result(distinct: true)
|
111
103
|
end
|
112
104
|
```
|
113
|
-
or without `distinct:true`, for sorting on an associated table's columns (in
|
105
|
+
or without `distinct: true`, for sorting on an associated table's columns (in
|
114
106
|
this example, with preloading each Person's Articles and pagination):
|
115
107
|
|
116
108
|
```ruby
|
@@ -177,6 +169,14 @@ column title or a default sort order:
|
|
177
169
|
<%= sort_link(@q, :name, 'Last Name', default_order: :desc) %>
|
178
170
|
```
|
179
171
|
|
172
|
+
You can use a block if the link markup is hard to fit into the label parameter:
|
173
|
+
|
174
|
+
```erb
|
175
|
+
<%= sort_link(@q, :name) do %>
|
176
|
+
<strong>Player Name</strong>
|
177
|
+
<% end %>
|
178
|
+
```
|
179
|
+
|
180
180
|
With a polymorphic association, you may need to specify the name of the link
|
181
181
|
explicitly to avoid an `uninitialized constant Model::Xxxable` error (see issue
|
182
182
|
[#421](https://github.com/activerecord-hackery/ransack/issues/421)):
|
@@ -213,6 +213,15 @@ The sort link may be displayed without the order indicator arrow by passing
|
|
213
213
|
<%= sort_link(@q, :name, hide_indicator: true) %>
|
214
214
|
```
|
215
215
|
|
216
|
+
Alternatively, all sort links may be displayed without the order indicator arrow
|
217
|
+
by adding this to an initializer file like `config/initializers/ransack.rb`:
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
Ransack.configure do |c|
|
221
|
+
c.hide_sort_order_indicators = true
|
222
|
+
end
|
223
|
+
```
|
224
|
+
|
216
225
|
### Advanced Mode
|
217
226
|
|
218
227
|
"Advanced" searches (ab)use Rails' nested attributes functionality in order to
|
@@ -264,7 +273,7 @@ Article.search(params[:q])
|
|
264
273
|
```
|
265
274
|
|
266
275
|
Users have reported issues of `#search` name conflicts with other gems, so
|
267
|
-
the `#search` method alias
|
276
|
+
the `#search` method alias will be deprecated in the next major version of
|
268
277
|
Ransack (2.0). It's advisable to use the default `#ransack` instead.
|
269
278
|
|
270
279
|
For now, if Ransack's `#search` method conflicts with the name of another
|
@@ -335,15 +344,40 @@ end
|
|
335
344
|
...
|
336
345
|
<%= content_tag :table do %>
|
337
346
|
<%= content_tag :th, sort_link(@q, :last_name) %>
|
338
|
-
<%= content_tag :th, sort_link(@q,
|
339
|
-
<%= content_tag :th, sort_link(@q,
|
347
|
+
<%= content_tag :th, sort_link(@q, :department_title) %>
|
348
|
+
<%= content_tag :th, sort_link(@q, :employees_last_name) %>
|
340
349
|
<% end %>
|
341
350
|
```
|
342
351
|
|
343
|
-
|
344
|
-
(`'employees.last_name'`)
|
345
|
-
|
346
|
-
|
352
|
+
If you have trouble sorting on associations, try using an SQL string with the
|
353
|
+
pluralized table (`'departments.title'`,`'employees.last_name'`) instead of the
|
354
|
+
symbolized association (`:department_title)`, `:employees_last_name`).
|
355
|
+
|
356
|
+
### Ransack Aliases
|
357
|
+
|
358
|
+
You can customize the attribute names for your Ransack searches by using a
|
359
|
+
`ransack_alias`. This is particularly useful for long attribute names that are
|
360
|
+
necessary when querying associations or multiple columns.
|
361
|
+
|
362
|
+
```ruby
|
363
|
+
class Post < ActiveRecord::Base
|
364
|
+
belongs_to :author
|
365
|
+
|
366
|
+
# Abbreviate :author_first_name_or_author_last_name to :author
|
367
|
+
ransack_alias :author, :author_first_name_or_author_last_name
|
368
|
+
end
|
369
|
+
```
|
370
|
+
|
371
|
+
Now, rather than using `:author_first_name_or_author_last_name_cont` in your
|
372
|
+
form, you can simply use `:author_cont`. This serves to produce more expressive
|
373
|
+
query parameters in your URLs.
|
374
|
+
|
375
|
+
```erb
|
376
|
+
<%= search_form_for @q do |f| %>
|
377
|
+
<%= f.label :author_cont %>
|
378
|
+
<%= f.search_field :author_cont %>
|
379
|
+
<% end %>
|
380
|
+
```
|
347
381
|
|
348
382
|
### Using Ransackers to add custom search functions via Arel
|
349
383
|
|
@@ -354,6 +388,58 @@ information about `ransacker` methods can be found [here in the wiki]
|
|
354
388
|
(https://github.com/activerecord-hackery/ransack/wiki/Using-Ransackers).
|
355
389
|
Feel free to contribute working `ransacker` code examples to the wiki!
|
356
390
|
|
391
|
+
### Problem with DISTINCT selects
|
392
|
+
|
393
|
+
If passed `distinct: true`, `result` will generate a `SELECT DISTINCT` to
|
394
|
+
avoid returning duplicate rows, even if conditions on a join would otherwise
|
395
|
+
result in some. It generates the same SQL as calling `uniq` on the relation.
|
396
|
+
|
397
|
+
Please note that for many databases, a sort on an associated table's columns
|
398
|
+
may result in invalid SQL with `distinct: true` -- in those cases, you will
|
399
|
+
will need to modify the result as needed to allow these queries to work.
|
400
|
+
|
401
|
+
For example, you could call joins and includes on the result which has the
|
402
|
+
effect of adding those tables columns to the select statement, overcoming
|
403
|
+
the issue, like so:
|
404
|
+
|
405
|
+
```ruby
|
406
|
+
def index
|
407
|
+
@q = Person.ransack(params[:q])
|
408
|
+
@people = @q.result(distinct: true)
|
409
|
+
.includes(:articles)
|
410
|
+
.joins(:articles)
|
411
|
+
.page(params[:page])
|
412
|
+
end
|
413
|
+
```
|
414
|
+
|
415
|
+
If the above doesn't help, you can also use ActiveRecord's `select` query
|
416
|
+
to explicitly add the columns you need, which brute force's adding the
|
417
|
+
columns you need that your SQL engine is complaining about, you need to
|
418
|
+
make sure you give all of the columns you care about, for example:
|
419
|
+
|
420
|
+
```ruby
|
421
|
+
def index
|
422
|
+
@q = Person.ransack(params[:q])
|
423
|
+
@people = @q.result(distinct: true)
|
424
|
+
.select('people.*, articles.name, articles.description')
|
425
|
+
.page(params[:page])
|
426
|
+
end
|
427
|
+
```
|
428
|
+
|
429
|
+
A final way of last resort is to call `to_a.uniq` on the collection at the end
|
430
|
+
with the caveat that the de-duping is taking place in Ruby instead of in SQL,
|
431
|
+
which is potentially slower and uses more memory, and that it may display
|
432
|
+
awkwardly with pagination if the number of results is greater than the page size.
|
433
|
+
|
434
|
+
For example:
|
435
|
+
|
436
|
+
```ruby
|
437
|
+
def index
|
438
|
+
@q = Person.ransack(params[:q])
|
439
|
+
@people = @q.result.includes(:articles).page(params[:page]).to_a.uniq
|
440
|
+
end
|
441
|
+
```
|
442
|
+
|
357
443
|
### Authorization (whitelisting/blacklisting)
|
358
444
|
|
359
445
|
By default, searching and sorting are authorized on any column of your model
|
@@ -416,9 +502,6 @@ In an `Article` model, add the following `ransackable_attributes` class method
|
|
416
502
|
|
417
503
|
```ruby
|
418
504
|
class Article < ActiveRecord::Base
|
419
|
-
|
420
|
-
private
|
421
|
-
|
422
505
|
def self.ransackable_attributes(auth_object = nil)
|
423
506
|
if auth_object == :admin
|
424
507
|
# whitelist all attributes for admin
|
@@ -428,6 +511,8 @@ class Article < ActiveRecord::Base
|
|
428
511
|
super & %w(title body)
|
429
512
|
end
|
430
513
|
end
|
514
|
+
|
515
|
+
private_class_method :ransackable_attributes
|
431
516
|
end
|
432
517
|
```
|
433
518
|
|
@@ -435,7 +520,6 @@ Here is example code for the `articles_controller`:
|
|
435
520
|
|
436
521
|
```ruby
|
437
522
|
class ArticlesController < ApplicationController
|
438
|
-
|
439
523
|
def index
|
440
524
|
@q = Article.ransack(params[:q], auth_object: set_ransack_auth_object)
|
441
525
|
@articles = @q.result
|
@@ -483,7 +567,7 @@ scope accepts a value:
|
|
483
567
|
|
484
568
|
```ruby
|
485
569
|
class Employee < ActiveRecord::Base
|
486
|
-
scope :
|
570
|
+
scope :activated, ->(boolean = true) { where(active: boolean) }
|
487
571
|
scope :salary_gt, ->(amount) { where('salary > ?', amount) }
|
488
572
|
|
489
573
|
# Scopes are just syntactical sugar for class methods, which may also be used:
|
@@ -492,29 +576,28 @@ class Employee < ActiveRecord::Base
|
|
492
576
|
where('start_date >= ?', date)
|
493
577
|
end
|
494
578
|
|
495
|
-
private
|
496
|
-
|
497
579
|
def self.ransackable_scopes(auth_object = nil)
|
498
580
|
if auth_object.try(:admin?)
|
499
581
|
# allow admin users access to all three methods
|
500
|
-
%i(
|
582
|
+
%i(activated hired_since salary_gt)
|
501
583
|
else
|
502
|
-
# allow other users to search on
|
503
|
-
%i(
|
584
|
+
# allow other users to search on `activated` and `hired_since` only
|
585
|
+
%i(activated hired_since)
|
504
586
|
end
|
505
587
|
end
|
588
|
+
|
589
|
+
private_class_method :ransackable_scopes
|
506
590
|
end
|
507
591
|
|
508
|
-
Employee.ransack({
|
592
|
+
Employee.ransack({ activated: true, hired_since: '2013-01-01' })
|
509
593
|
|
510
594
|
Employee.ransack({ salary_gt: 100_000 }, { auth_object: current_user })
|
511
595
|
```
|
512
596
|
|
513
|
-
|
514
|
-
that will convert it to a string
|
515
|
-
|
516
|
-
|
517
|
-
`active: ['true']`).
|
597
|
+
In Rails 3 and 4, if the `true` value is being passed via url params or some
|
598
|
+
other mechanism that will convert it to a string, the true value may not be
|
599
|
+
passed to the ransackable scope unless you wrap it in an array
|
600
|
+
(i.e. `activated: ['true']`). This is currently resolved in Rails 5 :smiley:
|
518
601
|
|
519
602
|
Scopes are a recent addition to Ransack and currently have a few caveats:
|
520
603
|
First, a scope involving child associations needs to be defined in the parent
|
@@ -662,16 +745,10 @@ called on a `ransack` search returns a `Mongoid::Criteria` object:
|
|
662
745
|
@people = @q.result.active.order_by(updated_at: -1).limit(10)
|
663
746
|
```
|
664
747
|
|
665
|
-
|
748
|
+
NOTE: Ransack currently works with either Active Record or Mongoid, but not
|
666
749
|
both in the same application. If both are present, Ransack will default to
|
667
|
-
Active Record only.
|
668
|
-
|
669
|
-
```ruby
|
670
|
-
@current_adapters ||= {
|
671
|
-
:active_record => defined?(::ActiveRecord::Base),
|
672
|
-
:mongoid => defined?(::Mongoid) && !defined?(::ActiveRecord::Base)
|
673
|
-
}
|
674
|
-
```
|
750
|
+
Active Record only. The logic is contained in
|
751
|
+
`Ransack::Adapters#instantiate_object_mapper` should you need to override it.
|
675
752
|
|
676
753
|
## Semantic Versioning
|
677
754
|
|
@@ -699,7 +776,3 @@ directly related to bug reports, pull requests, or documentation improvements.
|
|
699
776
|
* Spread the word on Twitter, Facebook, and elsewhere if Ransack's been useful
|
700
777
|
to you. The more people who are using the project, the quicker we can find and
|
701
778
|
fix bugs!
|
702
|
-
|
703
|
-
## Copyright
|
704
|
-
|
705
|
-
Copyright © 2011-2015 [Ernie Miller](http://twitter.com/erniemiller)
|
data/Rakefile
CHANGED
@@ -5,7 +5,10 @@ Bundler::GemHelper.install_tasks
|
|
5
5
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec) do |rspec|
|
7
7
|
ENV['SPEC'] = 'spec/ransack/**/*_spec.rb'
|
8
|
-
|
8
|
+
# With Rails 3, using `--backtrace` raises 'invalid option' when testing.
|
9
|
+
# With Rails 4 and 5 it can be uncommented to see the backtrace:
|
10
|
+
#
|
11
|
+
# rspec.rspec_opts = ['--backtrace']
|
9
12
|
end
|
10
13
|
|
11
14
|
RSpec::Core::RakeTask.new(:mongoid) do |rspec|
|
@@ -14,7 +17,7 @@ RSpec::Core::RakeTask.new(:mongoid) do |rspec|
|
|
14
17
|
end
|
15
18
|
|
16
19
|
task :default do
|
17
|
-
if ENV['DB'] =~ /
|
20
|
+
if ENV['DB'] =~ /mongoid/
|
18
21
|
Rake::Task["mongoid"].invoke
|
19
22
|
else
|
20
23
|
Rake::Task["spec"].invoke
|
data/lib/ransack.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
require 'active_support/core_ext'
|
2
|
-
|
3
2
|
require 'ransack/configuration'
|
4
|
-
|
5
3
|
require 'ransack/adapters'
|
6
|
-
|
4
|
+
|
5
|
+
Ransack::Adapters.object_mapper.require_constants
|
7
6
|
|
8
7
|
module Ransack
|
9
8
|
extend Configuration
|
10
9
|
class UntraversableAssociationError < StandardError; end;
|
10
|
+
|
11
|
+
SUPPORTS_ATTRIBUTE_ALIAS =
|
12
|
+
begin
|
13
|
+
ActiveRecord::Base.respond_to?(:attribute_aliases)
|
14
|
+
rescue NameError
|
15
|
+
false
|
16
|
+
end
|
11
17
|
end
|
12
18
|
|
13
19
|
Ransack.configure do |config|
|
@@ -23,9 +29,8 @@ require 'ransack/search'
|
|
23
29
|
require 'ransack/ransacker'
|
24
30
|
require 'ransack/helpers'
|
25
31
|
require 'action_controller'
|
26
|
-
|
27
32
|
require 'ransack/translate'
|
28
33
|
|
29
|
-
Ransack::Adapters.require_adapter
|
34
|
+
Ransack::Adapters.object_mapper.require_adapter
|
30
35
|
|
31
36
|
ActionController::Base.helper Ransack::Helpers::FormHelper
|
data/lib/ransack/adapters.rb
CHANGED
@@ -1,42 +1,62 @@
|
|
1
1
|
module Ransack
|
2
2
|
module Adapters
|
3
3
|
|
4
|
-
def self.
|
5
|
-
@
|
6
|
-
:active_record => defined?(::ActiveRecord::Base),
|
7
|
-
:mongoid => defined?(::Mongoid) && !defined?(::ActiveRecord::Base)
|
8
|
-
}
|
4
|
+
def self.object_mapper
|
5
|
+
@object_mapper ||= instantiate_object_mapper
|
9
6
|
end
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
|
8
|
+
def self.instantiate_object_mapper
|
9
|
+
if defined?(::ActiveRecord::Base)
|
10
|
+
ActiveRecordAdapter.new
|
11
|
+
elsif defined?(::Mongoid)
|
12
|
+
MongoidAdapter.new
|
13
|
+
end
|
13
14
|
end
|
14
15
|
|
15
|
-
|
16
|
-
|
16
|
+
class ActiveRecordAdapter
|
17
|
+
def require_constants
|
18
|
+
require 'ransack/adapters/active_record/ransack/constants'
|
19
|
+
end
|
20
|
+
|
21
|
+
def require_adapter
|
17
22
|
require 'ransack/adapters/active_record/ransack/translate'
|
18
23
|
require 'ransack/adapters/active_record'
|
19
24
|
end
|
20
25
|
|
21
|
-
|
26
|
+
def require_context
|
27
|
+
require 'ransack/adapters/active_record/ransack/visitor'
|
28
|
+
end
|
29
|
+
|
30
|
+
def require_nodes
|
31
|
+
require 'ransack/adapters/active_record/ransack/nodes/condition'
|
32
|
+
end
|
33
|
+
|
34
|
+
def require_search
|
35
|
+
require 'ransack/adapters/active_record/ransack/context'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class MongoidAdapter
|
40
|
+
def require_constants
|
41
|
+
require 'ransack/adapters/mongoid/ransack/constants'
|
42
|
+
end
|
43
|
+
|
44
|
+
def require_adapter
|
22
45
|
require 'ransack/adapters/mongoid/ransack/translate'
|
23
46
|
require 'ransack/adapters/mongoid'
|
24
47
|
end
|
25
|
-
end
|
26
48
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
49
|
+
def require_context
|
50
|
+
require 'ransack/adapters/mongoid/ransack/visitor'
|
51
|
+
end
|
31
52
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
53
|
+
def require_nodes
|
54
|
+
require 'ransack/adapters/mongoid/ransack/nodes/condition'
|
55
|
+
end
|
36
56
|
|
37
|
-
|
38
|
-
|
39
|
-
|
57
|
+
def require_search
|
58
|
+
require 'ransack/adapters/mongoid/ransack/context'
|
59
|
+
end
|
40
60
|
end
|
41
61
|
end
|
42
62
|
end
|