Rails中的多重多态模型

时间:2014-02-23 14:11:05

标签: database database-design ruby-on-rails-4 polymorphism

嘿所以我有一个我正在实施的基本架构。以下是基本模型

User - Public Free User of App
Organization - Subscribes to app, has employees
Employee - Belongs to an organization

这是我的多态部分

Post - Can be made by employees or users
Image - Multiple can be attached to either posts or comments
Comment - Can be added to images or posts by either employees or users

用户和员工是截然不同的。

完成了多态图像。我遇到麻烦的地方是评论部分。如何进行设置以使评论可以与图像或帖子相关联,并且可以由员工或用户发布。这是我到目前为止所做的。

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class Post < ActiveRecord::Base
  has_many :comments, :as => :commentable 
end

class Image < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

这样设置它以便评论可以属于帖子或图像,我该如何设置它以便员工/用户在添加它们时可以有很多评论?或者我应该将其拆分为EmployeeComments和UserComments。

似乎我需要另一个将承载多态所有权关联的表。

1 个答案:

答案 0 :(得分:1)

您应该只需要向belongs_to模型添加另一个多态Comment关联,该关联将代表评论的作者。

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
  belongs_to :authorable, :polymorphic => true
end

class User < ActiveRecord::Base
  has_many :comments, :as => :authorable
end

class Employee < ActiveRecord::Base
  has_many :comments, :as => :authorable
end