一个公司模型有很多标签并且有一个 country_id 字段。我想找到:
- 所有公司,位于某个县
- 所有位于某个县并具有特定标签
if params[:tag]
的公司都存在。
第一个查询很简单
Company.where(:country_id => params[:country_id])
至于第二个,我尝试了一些查询,但没有任何效果
companies = Company.where(:country_id => params[:country_id])
companies = Company.tags.where(:name=> params[:tag])
undefined method `tags' for #<Class:0x000000055dfb60>
如果我把
Company.tags.where(:name=> params[:tag])
那么错误是一样的
undefined method `tags' for #<Class:0x000000055dfb60>
在 Rails 控制台中,命令Company.first.tags
会按原样接收所有标签。
更新:这有效
Company.joins(:tags).where("tags.name = ?", query_hash[:tag])
但我还不明白如何做这样的事情
my_conditions = get_search_conditions
if query_hash[:tag].present?
companies = Company.all(:conditions => my_conditions).joins(:tags).where("tags.name = ?", query_hash[:tag])
else
companies = Company.all(:conditions => conditions)
end
错误是
undefined method `all' for #<Array:0x007fbec8063e00>