假设@news_writers是一个记录数组。然后,我想使用@news_writers查找由@news_writers中包含的所有新闻作者编写的所有新闻项。
所以我想要这样的东西(但这在语法上是不正确的):
@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
答案 0 :(得分:2)
和ennen一样,我不确定你的模特应该有什么样的关系。但一般来说,您可以找到所有具有给定集合列值的模型,如下所示:
News.all(:conditions => {:role_id => @news_writers.map(&:id)})
这将创建一个SQL查询,其条件如下:
WHERE role_id IN (1, 10, 13, ...)
其中整数是@news_writers的ID。
答案 1 :(得分:1)
我不确定我是否理解你 - @news_writers是角色模型的集合?如果这个假设是正确的,那么你的关联似乎是倒退 - 如果这些代表新闻项目的作者,那么新闻应该归属于角色(作为作者)吗?
无论如何,我认为最直接的方法是在@news_writers上使用迭代器,依次调用每个news_writer(如news_writer.news)的关联并将其推送到一个单独的变量中。
编辑:Daniel Lucraft的建议是一个比上述更优雅的解决方案。