公司模型有许多标记,并且有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>
答案 0 :(得分:1)
错误为
undefined method all for #<Array:0x007fbec8063e00>
如果将Company.all
替换为Company.where
答案 1 :(得分:0)
检查这是否有效 - Company.joins(:tags).where(“tags.name”,params [:tag])