会社モデルには多くのタグがあり、country_id フィールドがあります。私は見つけたい:
- 特定の郡にあるすべての企業
- 特定の郡にあり、特定のタグを持つすべての企業
if params[:tag]
が存在します。
最初のクエリは非常に簡単です
Company.where(:country_id => params[:country_id])
2つ目については、いくつかのクエリを試しましたが、何も機能しませんでした
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>