我有一个用户数据库,它与一个与文章数据库的has_many关系相关。
我希望用户能够拥有他不是作者的喜爱文章列表。我不确定如何实现这一点。我最初想到的是一个用户的数组,它包含了他最喜欢的帖子的所有id,但似乎有一种更直观的方式来做。
答案 0 :(得分:1)
可能你喜欢数据库中的收藏夹以及作者关系。这样做的方法是添加另一个连接表,可能称为“favorite_articles”。
create_table :favorite_articles, :id => false do |t|
t.integer :user_id
t.integer :article_id
end
# also add foreign keys, assuming you're using a database that supports them
然后为其添加一个模型:属于用户和文章,并在用户和文章中使用has_many :through关联。但是,您必须将该关联命名为除文章之外的其他内容。
class User < ActiveRecord::Base
has_many :favorite_articles
has_many :favorites, :through => :favorite_articles, :class_name => "Article"
end
class FavoriteArticle < ActiveRecord::Base
belongs_to :user
belongs_to :article
end
class Article < ActiveRecord::Base
has_many :favorite_articles
has_many :users_who_favorited, :through => :favorite_articles, :class_name => "User"
end