0

我有一个用户数据库,它通过 has_many 关系与文章数据库相关联。

我希望用户能够拥有他不是作者的最喜欢的文章列表。我不确定如何实现这一点。我最初为用户考虑了一个数组,其中包含他最喜欢的帖子的所有 id,但似乎有一种更直观的方法来做到这一点。

4

1 回答 1

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
于 2013-07-20T01:56:59.583 回答