我有一个带有表的Rails应用程序,我希望在每列的顶部都有搜索字段,这些字段应该对列执行搜索,并且这些搜索应该一起工作。所以我正在寻找一种实现它的方法,偶然发现了Ransack gem,它看起来不错,所有它的选择和排序功能,但我不能理解我是否可以用它来解决我的问题。
从文档中我看到我可以像这样传递一个参数
User.ransack(first_name_cont: 'Rya').result.to_sql
但我认为这对我的问题还不够,我需要类似的东西
User.ransack(first_name_cont: 'Foo', last_name_eq: 'Bar', middle_name_in: [Moo, Boo]).result.to_sql
我可以用Ransack做这样的事吗?或者我怎么能用它来解决我的问题,或者我应该用别的东西?
答案 0 :(得分:0)
Ransack负责自己搜索每个领域。因此,您可以在搜索中指定表中存在的任何字段。
您可以将任何字段与谓词组合在一起。例如,您有字段age
:
User.ransack(age_eq: 21) # => age = 21
User.ransack(age_lt: 21) # => age < 21
User.ransack(age_in: [21]) # => age in [21]
与另一个字段'name'结合使用:
User.ransack(age_lt: 21, name_eq: 'Tim') # => age < 21 AND name = 'Tim'
User.ransack(age_gteq: 21, name_eq: 'Tom') # => age >= 21 AND name = 'Tom'
您可以使用in
谓词或not_in
进行相反操作来传递多个值。