2009-04-12 99 views
2

說如果@news_writers是一個記錄數組。然後,我想使用@news_writers來查找@news_writers中包含的所有新聞作者編寫的所有新聞項目。幫助與Rails find_by查詢

所以我想是這樣的(但這是語法不正確):

@news = News.find_all_by_role_id(@news_writers.id) 

注意

class Role < ActiveRecord::Base 
    has_many :news 
end 

and 

class News < ActiveRecord::Base 
    belongs_to :role 
end 

回答

2

和ennen一樣,我不確定你的模型應該有什麼關係。但在一般情況下,你可以找到與列值的所有車型,從一組給定這樣的:

News.all(:conditions => {:role_id => @news_writers.map(&:id)}) 

這將創建一個WHERE條件像SQL查詢:

WHERE role_id IN (1, 10, 13, ...) 

,其中整數是@news_writers的ID。

1

我不知道如果我理解你 - @news_writers是集合角色模型?如果這個假設是正確的,那麼你的聯繫似乎是倒退的 - 如果這些代表新聞項目的作者,那麼不應該屬於新聞屬於作者(作爲作者)?

無論如何,我會假設最直接的方法是使用@news_writers上的迭代器,依次調用每個news_writer(如news_writer.news)的關聯並將其推入單獨的變量中。

編輯:Daniel Lucraft的建議是比上述更優雅的解決方案。

+0

你說得對,我解決了這個問題。 – alamodey 2009-04-12 10:41:13