2013-03-22 118 views
0

我正在嘗試找到篩選has_many關聯中的對象的最佳解決方案。我有一個設置是通過屬性值篩選has_many

class Company < ActiveRecord::Base 
    has_many :products 
end 

class Product < ActiveRecord::Base 
    attr_accessible :title 
    belongs_to :company 
end 

然後在我的CompaniesController#show方法就是我想要做的是過濾產品通過它的標題。

def show 
    @company = Company.find(params[:id]) 
    # Then I just want the @company.products where title = params[:title] 
end 

任何幫助將不勝感激。

+1

「Filterrific」軌道寶石是精確的工具這個。該文檔有一個關於構建ActiveRecord作用域以過濾has_many關聯屬性的頁面:http://filterrific.clearcove.ca/pages/active_record_scope_patterns.html#filter_by_existence_has_many – 2013-05-17 21:49:21

回答

0

您的控制器操作從哪裏獲取產品標題(params [:title])?如果你只是路過它通過表單提交一個搜索詞,那麼你應該能夠運行像....

@products = @company.products.where("title = ?", params[:title]) 

編輯: 存儲相關產品在@company變量將會有問題,因爲@company將包含一系列相關產品(而不是公司對象),這不僅會限制您可以從show變量中訪問有關特定公司的信息,還會變得令人困惑(例如,重新使用名爲@company的變量來存儲與公司相關聯的產品的列表)

+0

這是我的CompanyController中的show method方法。我只想返回@company實例。 – aahrens 2013-03-22 18:52:25

+0

是否有任何理由不能創建單獨的實例變量來存儲關聯的產品?所以你說的是你想在@company存儲關聯(過濾)的產品? – ply 2013-03-22 19:02:13

+0

確切地說,如果這是可能的,但我想這樣做也會實現我想要的。 – aahrens 2013-03-22 19:07:42