Rails中同一两个表的两种不同类型的关联

时间:2010-06-11 20:04:23

标签: ruby-on-rails polymorphic-associations has-and-belongs-to-many

我有两个模型,用户和主题,我目前正加入一个themes_users表中的HABTM关联。基本上,在用户创建新主题后,其他用户可以选择供自己使用。

但是,只有主题的原始创建者才能够编辑它。所以,我需要有一些其他类型的关联来处理这种关系,比如主题中的created_by_id字段。

通过这种方式,用户模型充当两个不同的角色:它们可以是主题的实现者和/或主题的所有者。实现者关系由themes_users连接表处理;问题是:处理这种二级关联的正确方法是什么?我是否需要使用户具有多态性,然后将created_by_id引用设为“所有者”?或者有更容易的事情吗?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我相信你应该添加以下关联

class User < ApplicationController
   # a user can create many themes
   has_many :themes_created, :foreign_key => :creator_id, :class_name => "Theme"
end

class Theme < ApplicationController
   # add a creator_id column in your themes table
   belongs_to :creator, :class_name => "User"
end

通过这种方式,您可以获得themes通过

创建的所有@user
@user.themes_created