我有一个用户数据库,它通过 has_many 关系与文章数据库相关联。
我希望用户能够拥有他不是作者的最喜欢的文章列表。我不确定如何实现这一点。我最初为用户考虑了一个数组,其中包含他最喜欢的帖子的所有 id,但似乎有一种更直观的方法来做到这一点。
我有一个用户数据库,它通过 has_many 关系与文章数据库相关联。
我希望用户能够拥有他不是作者的最喜欢的文章列表。我不确定如何实现这一点。我最初为用户考虑了一个数组,其中包含他最喜欢的帖子的所有 id,但似乎有一种更直观的方法来做到这一点。
可能您希望收藏夹和作者关系一样存在于数据库中。这样做的方法是添加另一个连接表,可能称为“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