在我的Users控制器的索引操作中,我能够捕获属于ActiveRecord :: Relation对象current_user
中@users
所在城市的所有用户。在我看来,我能够遍历@users
并显示结果。我想做的是给current_user
更多选项来过滤结果。我想在视图中添加一个表单和过滤器按钮,这将允许current_user选择过滤器,例如:
当current_user进行选择并点击过滤器后,将根据所选条件过滤结果。我想知道如何构建查询来执行此操作?
答案 0 :(得分:9)
通过在用户模型中创建范围方法,在没有库的情况下自己完成此操作也相对简单。例如:
class User
def self.filtered_by_age(opts = {})
min = opts[:min]
max = opts[:max]
user = User.arel_table
if min && max
self.where(:age => min..max)
elsif min && !max
self.where(user[:age].gt(min))
elsif max && !min
self.where(user[:age].lt(max))
else
self.all
end
end
end
然后您可以使用
进行调用@users.filtered_by_age(min: 25, max: 52)
答案 1 :(得分:4)
最好的赌注是Ranksack:https://github.com/ernie/ransack 这提供了以搜索为中心的功能。
OR
Squeel为ActiveRecord的高级查询提供了一个易于使用的界面:https://github.com/ernie/squeel