【问题标题】:Self referential associations (Ruby on Rails)自引用关联(Ruby on Rails)
【发布时间】:2010-09-24 05:06:59
【问题描述】:

我想创建一个系统让用户评论帖子,cmets 也可以回复。因为我不能建立一个自我参照的 HABTM 关系,所以我做了一些研究,发现我应该以这种方式进行:

Post
  has_many :comments
end

Comment
  belongs_to :user
  belongs_to :post
  has_many :replies, :class_name => 'Comment'
end

我知道这不是 100% 正确的(这就是我问的原因)。如果有人可以建议我如何建立这种关系以及我需要如何创建迁移,我将不胜感激!!谢谢!

【问题讨论】:

    标签: ruby-on-rails activerecord associations


    【解决方案1】:

    最简单的解决方案是使用acts_as_tree 插件。很容易看出它是如何实现的,但基本上你需要在你的模型上添加一个自引用的belongs_to 和一个parent_id 列。 (带有 nil parent_id 的评论是顶级评论;不是回复。)

    【讨论】:

      【解决方案2】:

      假设也可以回复回复,您将拥有一棵 cmets 树。所以我建议你使用acts_as_tree:

      Comment < ActiveRecord::Base
        belongs_to :user
        belongs_to :post
        acts_as_tree :order => 'created_at'
      end
      

      【讨论】:

        猜你喜欢
        • 2021-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多