我希望为我的“用户”和“链接”模型添加一个“收藏夹”模型。
业务逻辑
- 用户可以拥有多个链接(即,他们可以添加多个链接)
- 用户可以收藏多个链接(自己的或其他用户的)
- 一个链接可以被多个用户收藏,但只有一个所有者
class User < ActiveRecord::Base
has_many :links
has_many :favorites
end
class Link < ActiveRecord::Base
belongs_to :user
#can be favorited by multiple users
end
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :link
end
has_many :through
结合class_name
选项表示 Rails 应该在给定关联中查找另一个关联,从而通过两个模型来获取正确的对象。 - Michelle Tilleyhas_many:favorite_links,:through =>:favorites
看作是通过用户的“收藏夹”查找并进入这些收藏所属的“链接”。这只是一种快捷方式,本质上与user.favorites.map {|f| f.link}
相同(但更有效)。 - Michelle Tilley