diff --git a/README.md b/README.md index 0d0beb4..37467b1 100644 --- a/README.md +++ b/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 diff --git a/lib/ransack/helpers/form_helper.rb b/lib/ransack/helpers/form_helper.rb index 461406e..2db9bf8 100644 --- a/lib/ransack/helpers/form_helper.rb +++ b/lib/ransack/helpers/form_helper.rb @@ -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 diff --git a/lib/ransack/version.rb b/lib/ransack/version.rb index 9c15d38..2a37df3 100644 --- a/lib/ransack/version.rb +++ b/lib/ransack/version.rb @@ -1,3 +1,3 @@ module Ransack - VERSION = "1.4.1" + VERSION = "1.4.2" end diff --git a/spec/ransack/helpers/form_helper_spec.rb b/spec/ransack/helpers/form_helper_spec.rb index 198bf46..22dc5a3 100644 --- a/spec/ransack/helpers/form_helper_spec.rb +++ b/spec/ransack/helpers/form_helper_spec.rb @@ -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