繁体   English   中英

将活动记录查询链接在一起

[英]Chaining active record queries together

我有一个搜索表单,其中包含诸如city,building_type,min_price,max_price之类的参数。

将所有这些查询链接在一起的最佳方法是什么。 如果用户没有设置参数,我希望它只返回所有记录。

就像是

city=params[:city] || "all"
building_type=params[:building_type] || "all"
min_price=params[:min_price] || "all"

@results= Property.where(city: city,building_type: building_type,min_price: min_price)

有可能做这样的事情吗? 看到没有“ all”关键字。

您可以通过在单个变量中分配要执行的所有查询的结果来链接活动记录查询

properties = Property.all
properties = properties.where(city: params[:city]) if params[:city].present?
properties = properties.where(building_type: params[:building_type]) if params[:building_type].present?

此外,如果参数键与数据库中的列相同,则可以将它们全部放置在数组中并像这样遍历它

properties = Property.all

%i[city building_type min_price].each do |column_name|
  next if params[column_name].blank?
  properties = properties.where(column_name => params[column_name])
end

注意

第一行, properties = Property.all假定它返回一个ActiveRecord::Relation对象,这是Rails 4中的默认对象(不确定)。 如果您使用的是Rails 3,则只需使用Property

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM