我按照Michael Hartle的《Rails教程》制作了一个用户跟踪系统,该系统通过一个关系表工作,其中包含一个follower_id
和一个followed_id
。
我想添加另一个关系,这次是收藏系统。我是最好将列添加到关系表中并使用它,还是应该创建一个新模型来保存收藏关系?
我认为你的问题没有明确的答案。
但是为了保持简单,我会考虑只使用一个带有标志
的Connection
表-
is_followed
-
is_favorite
特别是如果你只能喜欢被关注的人,验证变得容易得多。仍然允许在模型中使用简单的访问器
class Person < ActiveRecord::Base
...
has_many :favorites, :through => :connections, :conditions => { :is_favorite => true }, :source => ...
has_many :followers, :through => :connections, :conditions => { :is_followed => true }, :source => ...
has_many :followee, :through => :connections, :conditions => { :is_followed => true }, :source => ...
顺便说一下,你可以声明的外键关系是如果你想让用户外键作为最喜欢的表中的列,你必须在最喜欢的迁移文件中写t.l ereference:user