Ruby on rails 如何定义';有一种风格';与多个不同模型之一的关联?

Ruby on rails 如何定义';有一种风格';与多个不同模型之一的关联?,ruby-on-rails,associations,models,has-one,Ruby On Rails,Associations,Models,Has One,如果模型之间的关联可以与两个不同模型中的一个实例关联,是否有任何方法可以定义模型之间的has_one样式关联?特别是,我有以下型号: 职位 评论 用户发表帖子,其他用户可以对此发表评论。但用户也可以对其他评论发表评论(类似于Facebook的帖子)。我试图在我的项目中反映这种关系,我说一条评论可以有一个目标(这个目标可以是一篇文章,也可以是另一条评论) 我认为最好使用has_-one关联,但据我所知,has_-one关联只能用于将一个模型与另一个模型关联 如何在这些模型之间实现多个(或其他类似格

如果模型之间的关联可以与两个不同模型中的一个实例关联,是否有任何方法可以定义模型之间的has_one样式关联?特别是,我有以下型号:

职位

评论

用户发表帖子,其他用户可以对此发表评论。但用户也可以对其他评论发表评论(类似于Facebook的帖子)。我试图在我的项目中反映这种关系,我说一条评论可以有一个目标(这个目标可以是一篇文章,也可以是另一条评论)

我认为最好使用has_-one关联,但据我所知,has_-one关联只能用于将一个模型与另一个模型关联


如何在这些模型之间实现多个(或其他类似格式的)关系?

您想要一个关系<代码>属于_to位于注释模型正在执行的引用其他内容的一侧(具有
xx\u id
列);考虑到帖子将<代码> HasyButh<代码> >,与<>代码的反义词HasySuth<<代码>是<代码>归属到。多态性=可以引用任何模型。

您很幸运,因为Rails很久以前就处理过这个问题。这是一个典型的例子。您需要这样定义您的模型:

class Post
  has_many :comments, as: :commentable
end

class Comment
  # fields :commentable_type, type: String
  # fields :commentable_id, type: Integer

  belongs_to :user

  belongs_to :commentable, polymorphic: true
  has_many :comments, as: :commentable
end
您可以在这两个方面调用
注释
,如下所示:

post.comments

# And
post.comments.first.comments

谢谢任何一个偶然发现这个问题的人,点击上面答案中的链接,它与这个回答结合在一起,彻底澄清了情况。