0

我正在尝试按年龄过滤结果,堆栈中的某个人非常友好地提出了一种方法来做到这一点。在我的索引操作中,我有:

@users = User.all
@users = User.where("birthday >= ? AND birthday <= ?", params[:min_age].to_i.years.ago + 1.day, params[:max_age].to_i.years.ago)

我希望默认显示所有用户,然后为 current_user 提供按年龄过滤的选项。但是使用上面的代码,它也会选择第二行并自动过滤结果。结果是过滤了今天或昨天生日的用户,因为没有传入参数,默认不显示用户。我想要一些功能,如果没有传入参数,它不会运行上面第二行中的代码,或者如果这是不可能的,如果没有传入参数,我可以有默认参数。

4

1 回答 1

1

你可以试试:

@users = User.all
@users = @users.where("birthday >= ?", params[:min_age].to_i.years.ago + 1.day) if params[:min_age]
@users = @users.where("birthday <= ?", params[:max_age].to_i.years.ago) if params[:max_age]

也许:

if params[:min_age] && params[:max_age]
  @users = User.where("birthday >= ? AND birthday <= ?", params[:min_age].to_i.years.ago + 1.day, params[:max_age].to_i.years.ago)
else
  @users = User.all
end
于 2013-04-07T04:52:12.773 回答