2012-09-05 36 views
1

公司模型有許多標籤並且有country_id字段。我想找到:在Ruby on Rails中的兒童模型中搜索

  1. 所有的公司,位於某縣
  2. 所有的公司,位於某縣並具有一定的標籤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接收所有標籤。

UPDATE:這個作品

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> 

回答

2

的錯誤是undefined method all for #<Array:0x007fbec8063e00>

如果用替換Company.all它應該工作Company.where

1

檢查,如果這作品 - Company.joins(:tags).where(「tags.name」,params [:tag])