Make ransacker_args test work with Sqlite3,
simplify a bit, and rename things for clarity.
This commit is contained in:
parent
51262afe66
commit
4ac02e5f14
|
@ -319,19 +319,22 @@ module Ransack
|
|||
c: [{
|
||||
a: {
|
||||
'0' => {
|
||||
name: 'with_passed_arguments', ransacker_args: [10, 100]
|
||||
name: 'with_arguments', ransacker_args: [10, 100]
|
||||
}
|
||||
},
|
||||
p: 'cont',
|
||||
v: ['Rails has been released']
|
||||
v: ['Passing arguments to ransackers!']
|
||||
}]
|
||||
)
|
||||
puts "
|
||||
#{s.result.to_sql}"
|
||||
expect(s.result.to_sql).to match(
|
||||
/CHAR_LENGTH\(articles.body\) BETWEEN 10 AND 100/
|
||||
/LENGTH\(articles.body\) BETWEEN 10 AND 100/
|
||||
)
|
||||
expect(s.result.to_sql).to match(
|
||||
/LIKE \'\%Rails has been released\%\'/
|
||||
)
|
||||
/LIKE \'\%Passing arguments to ransackers!\%\'/
|
||||
)
|
||||
expect { s.result.first }.to_not raise_error
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -67,17 +67,17 @@ class Person < ActiveRecord::Base
|
|||
Arel.sql('people.id')
|
||||
end
|
||||
|
||||
ransacker :with_passed_arguments, args: [:parent, :ransacker_args] do |parent, args|
|
||||
min_body, max_body = args
|
||||
sql = <<-SQL
|
||||
ransacker :with_arguments, args: [:parent, :ransacker_args] do |parent, args|
|
||||
min, max = args
|
||||
query = <<-SQL
|
||||
(SELECT MAX(articles.title)
|
||||
FROM articles
|
||||
WHERE articles.person_id = people.id
|
||||
AND CHAR_LENGTH(articles.body) BETWEEN #{min_body} AND #{max_body}
|
||||
AND LENGTH(articles.body) BETWEEN #{min} AND #{max}
|
||||
GROUP BY articles.person_id
|
||||
)
|
||||
SQL
|
||||
Arel.sql(sql.squish)
|
||||
Arel.sql(query)
|
||||
end
|
||||
|
||||
def self.ransackable_attributes(auth_object = nil)
|
||||
|
|
Loading…
Reference in New Issue