mirror of
https://github.com/activerecord-hackery/ransack.git
synced 2022-11-09 13:47:45 -05:00
Update README to point out 2 caveats with scopes and
provide Gemfile info for using branches. Minor example code change. [skip ci]
This commit is contained in:
parent
9568dd48e0
commit
cde3e0e6f2
4 changed files with 23 additions and 10 deletions
16
README.md
16
README.md
|
@ -42,12 +42,18 @@ gem 'ransack', github: 'activerecord-hackery/ransack'
|
|||
|
||||
The other branches (`rails-4`, `rails-4.1`, and `rails-4.2`) were each used for
|
||||
developing and running Ransack with the latest upcoming version of Rails at the
|
||||
time. They are lighter and somewhat faster-running because they do not have to
|
||||
time. They are smaller and possibly slightly faster because they do not have to
|
||||
support previous versions of Rails and Active Record. Once support for that
|
||||
Rails version is merged from the branch into Ransack master, the branch is no
|
||||
longer actively maintained -- unless the open source community submits pull
|
||||
requests to maintain them. You are welcome to do so!
|
||||
|
||||
To use one of the branches, for example the `rails-4.1` branch:
|
||||
|
||||
```ruby
|
||||
gem 'ransack', github: 'activerecord-hackery/ransack', branch: 'rails-4.1'
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Ransack can be used in one of two modes, simple or advanced.
|
||||
|
@ -407,7 +413,7 @@ scope accepts a value:
|
|||
|
||||
```ruby
|
||||
class Employee < ActiveRecord::Base
|
||||
scope :active, ->(boolean = true) { (where active: boolean) }
|
||||
scope :active, ->(boolean = true) { where(active: boolean) }
|
||||
scope :salary_gt, ->(amount) { where('salary > ?', amount) }
|
||||
|
||||
# Scopes are just syntactical sugar for class methods, which may also be used:
|
||||
|
@ -434,6 +440,12 @@ Employee.search({ active: true, hired_since: '2013-01-01' })
|
|||
Employee.search({ salary_gt: 100_000 }, { auth_object: current_user })
|
||||
```
|
||||
|
||||
Scopes are a recent addition to Ransack and currently have 2 caveats: First, if
|
||||
you are using a scope with associations, for now you'll need to define the
|
||||
scope in the parent table model, not in the child model. Second, scopes on
|
||||
arrays of values are not yet working correctly; in this case, it may be better
|
||||
to use Ransackers instead.
|
||||
|
||||
### Grouping queries by OR instead of AND
|
||||
|
||||
The default `AND` grouping can be changed to `OR` by adding `m: 'or'` to the
|
||||
|
|
|
@ -96,8 +96,9 @@ module Ransack
|
|||
css = ['sort_link', current_dir].compact.join(' ')
|
||||
html_options[:class] = [css, html_options[:class]].compact.join(' ')
|
||||
query_hash = {}
|
||||
query_hash[search.context.search_key] = search_params
|
||||
.merge(:s => "#{attr_name} #{new_dir}")
|
||||
query_hash[search.context.search_key] = search_params.merge(
|
||||
:s => "#{attr_name} #{new_dir}"
|
||||
)
|
||||
options.merge!(query_hash)
|
||||
options_for_url = params.merge options
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module Ransack
|
||||
VERSION = "1.4.1"
|
||||
VERSION = "1.4.2"
|
||||
end
|
||||
|
|
|
@ -71,10 +71,10 @@ module Ransack
|
|||
}
|
||||
end
|
||||
|
||||
describe '#sort_link desc through association table defined as a symbol' do
|
||||
describe '#sort_link through association table defined as a symbol' do
|
||||
subject { @controller.view_context
|
||||
.sort_link(
|
||||
Person.search({ :sorts => ['comments_body asc'] }),
|
||||
Person.search({ :sorts => 'comments_body' }),
|
||||
:comments_body, :controller => 'people'
|
||||
)
|
||||
}
|
||||
|
@ -94,8 +94,8 @@ module Ransack
|
|||
describe '#sort_link through association table defined as a string' do
|
||||
subject { @controller.view_context
|
||||
.sort_link(
|
||||
Person.search({ :sorts => ['comments.body desc'] }),
|
||||
'comments.body', :controller => 'people'
|
||||
Person.search({ :sorts => 'comments.body desc' }),
|
||||
:comments_body, :controller => 'people'
|
||||
)
|
||||
}
|
||||
it {
|
||||
|
@ -108,7 +108,7 @@ module Ransack
|
|||
)
|
||||
}
|
||||
it { should match /sort_link desc/ }
|
||||
it { should match /Comments.body ▼/ }
|
||||
it { should match /Body ▼/ }
|
||||
end
|
||||
|
||||
describe '#sort_link works even if search params are a blank string' do
|
||||
|
|
Loading…
Reference in a new issue