ActiveModel:不同类型资源的正确关系

ActiveModel: proper relation for a different type of the resource

我正在尝试为以下情况确定正确的 ActiveModel 关系:有图片并且它们有不同的类别:foo、bar、baz 和 qux。用户可以为每张图片设置一个赞和多个评论。 我从 CatregoryFoo 模型开始。最简单的方法可能是 - 为每个 Foo、Bar、Baz 和 Qux 模型创建 likescomments 属性。但我觉得这是一种愚蠢的方法……可能有更好的方法。 对于这种情况,可以选择什么样的最佳关系?

这是我阅读你的问题时的想象(我确定你的图片是由用户创建的,因为你的模型看起来很像社交网络):

class User < ActiveRecord::Base
  has_many :pictures
  has_many :comments
  has_one :like
end

class Picture < ActiveRecord::Base
  belongs_to :user
  belongs_to :category
  has_many :likes
  has_many :comments
end

class Category < ActiveRecord::Base
  has_many :pictures
end

class Comment < ActiveRecord::Base
   belongs_to :user
   belongs_to :picture
end

class Like < ActiveRecord::Base
   belongs_to :user
   belongs_to :picture
end

类别是 categories Table 的行。与其为每个类别创建一个模型,不如为所有类别创建一个模型 Category,并具有 namecolor 或任何您想要的属性。