0

我有 3 个模型

  • User
  • Journal
  • Post

关于这些可以假设几件事

  • User has_many :journals
  • Journal has_many :posts

我希望用户能够订阅我网站上的其他用户和特定期刊。

我在想我需要一个Subscription看起来像这样的多态模型

class CreateSubscriptions < ActiveRecord::Migration
  def change
    create_table :subscriptions do |t|
      t.integer :user_id
      t.references :subscribable, :polymorphic=>true
      t.timestamps
    end
  end
end

但这就是我卡住的地方。我不知道如何在我的User模型中设置多态关系。

我希望能够得到以下东西:

  • @user.watched_users
  • @user.watched_journals
  • @user.followers
  • @journal.followers

有人可以帮忙吗?文档在这方面很少见,我知道这些设置起来可能很麻烦。

^_^

4

1 回答 1

1

虽然我理解希望让用户订阅任意对象的愿望,但实际上,您最终会以不同的方式处理这些不同的订阅,所以至少现在(直到您发现自己想要订阅站点),只需将它们分开(YAGNI)。

您可以通过每个关系的简单连接表来完成此操作。关于如何在 ActiveRecord 中进行自反自连接关系的答案?在http://railscasts.com/episodes/163-self-referential-association中引出了一个很好的例子

于 2012-07-30T08:47:24.843 回答