通过has_many和multiple属于的关联

时间:2012-10-25 16:12:19

标签: ruby-on-rails ruby database associations

我有以下模特和协会:

class User < ActiveRecord::Base   
    has_and_belongs_to_many :songs
end

class Song < ActiveRecord::Base 
    has_and_belongs_to_many :users
    belongs_to :album
    delegate :artist, :to => :album, :allow_nil => true
end

class Album < ActiveRecord::Base
    has_many :songs
    belongs_to :artist
end

class Artist < ActiveRecord::Base
    has_many :albums
    has_many :songs, :through => :albums
end

我需要能够定期调用user.albums和user.artists。是否是在用户和艺术家/专辑之间创建has_and_belongs_to_many关联的最有效选项?

似乎应该有更好的方法,但我还没有找到任何东西。

1 个答案:

答案 0 :(得分:2)

你可以使用has_many:albums,:through =&gt; :用户对象上的歌曲。 Arel(AR)会自动为您创建连接,从而产生一个查询,并且只会获取与属于用户的歌曲相关的相册。用户对象上的艺术家也是如此。