我正在尝试使用多个参数在索引上构建过滤器区域。我的问题是,如果需要,我不知道如何使它们成为可选项。我的意思是,即使我没有为字段设置值,我希望我的过滤器只能用我填充的那些。
我编写的代码运行良好,除非删除一个或多个参数。
def self.filter(type, min, max, start_at, end_at)
where(type => min..max, :first_date => start_at..end_at).order("#{type}": :desc)
end
我知道我可以使用scope
但是因为我是Rails的新手,所以还不太清楚。如果有人可以提供一些提示?谢谢!
答案 0 :(得分:1)
您可以将这些内容发送到nil
def self.filter(type =nil, min=nil, max=nil, start_at=nil, end_at=nil)
a = YourModel
a = a.where(type => min..max) if min.present? && max.present?
a = a.where(first_date: start_at..end_at) if start_at? && end_at.present?
a = a.order("#{type}#": :desc) if type.present?
a
end
答案 1 :(得分:0)
您可以链接多个
result = where(type => min..max)
result = result.where(first_date: start_at..end_at) if start_date && end_date
return result