has_many之后has_many:通过?

时间:2016-10-25 13:32:11

标签: ruby-on-rails ruby associations

以下是我目前的型号......

class Artist < ApplicationRecord
  has_many :albums
  has_many :follows
  has_many :users, -> { uniq }, through: :follows
end

class Album < ApplicationRecord
  belongs_to :artist
end

class Follow < ApplicationRecord
  belongs_to :artist
  belongs_to :user
end

class User < ApplicationRecord
  has_many :follows
  has_many :artists, -> { uniq }, through: :follows
end

我希望能够为用户获取所有Albums

我可以轻松地获得艺术家(@user.artists),但我遇到的是这些艺术家的所有专辑。

Artists通过Users模式与Follows相关联。

很想能够做@users.albums@users.artists.albums

之类的事情

1 个答案:

答案 0 :(得分:1)

您有user has_many :artistsartist has_many :albums

只需在has_many模型中使用User

创建album :through artists关联
class User < ApplicationRecord
  has_many :follows
  has_many :artists, -> { uniq }, through: :follows
  has_many :album, through: :artists
end

现在您可以使用@user.albums