我有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
有人可以帮忙吗?文档在这方面很少,我知道这些可能是一件真正的苦差事。
^ _ ^
答案 0 :(得分:1)
虽然我理解想要让用户订阅任意对象的愿望,但实际上,你最终会以不同的方式处理这些不同的订阅,所以至少现在(直到你发现自己想要订阅其他订阅)网站上的对象),将它们分开(YAGNI)。
您可以通过每个关系的简单连接表来执行此操作。 How do I do reflexive self-join relationships in ActiveRecord?上的答案在http://railscasts.com/episodes/163-self-referential-association
中得出了一个很好的例子