如何获取与模型关联模型相关的模型?
问题描述:
我有两种模式。如何获取与模型关联模型相关的模型?
文章
class Article < ActiveRecord::Base
attr_accessible :title, :body, :artist_ids
has_many :artists, :through => :artist_relationships
has_many :artist_relationships
end
Artist.rb
class Artist < ActiveRecord::Base
attr_accessible :title, :body, :article_ids
has_many :articles, :through => :artist_relationships
has_many :artist_relationships
end
现在假设我有两个Artist
相关的Article
(如迈克尔·杰克逊,披头士......)
那么每个艺术家都有一些文章给他们。
我想要做的是通过其artists
获取所有文章与Article
有关..
这是什么东西我想(这是行不通的....)
@article = Article.find(param[:id]) # an Article
@articles = Article.where(:artist_ids => @article.artist_ids) # get all articles of its related artists
答
尝试
@articles = Article.joins(:artist_relationships).where(artist_relationships: { artist_id: @article.artist_ids })
答
你没有发布您的代码为您ArtistRelationship模型,但我相信你完成了has_man使用y_through关系:
class ArtistRelationship < ActiveRecord::Base
belongs_to :article
belongs_to :artist
end
如果您在本设置正确,那么你就可以利用的方法,如@article.artists
或@artist.articles
。
所以,你可以做线沿线的东西:
@article = Article.find(params[:id]) #Any given article
@artists = @article.artists #All artists related to the article
@articles = @artists.collect{|artist| artist.articles} #Collection of all articles related to all the artists
+0
我会检查收集方法。谢谢! – synthresin 2013-03-04 06:39:09
谢谢您的回答。它工作正常,除了有关两位艺术家的文章出现两次。我该如何解决它? – synthresin 2013-03-04 05:40:29
我通过附加'''.uniq'''解决了这个问题,谢谢! – synthresin 2013-03-04 05:45:31