ruby-on-rails - 如何为 belongs_to 本身的 Rails 模型编写迁移

标签 ruby-on-rails ruby ruby-on-rails-4

模型场景:

A node can belong to a parent node and can have child nodes.

模型/节点.rb

class Node < ActiveRecord::Base                                                                

  has_many :children, class_name: "Node", foreign_key: "parent_id"                             
  belongs_to :parent, class_name: "Node"                                                       

end           

db/migrations/20131031144907_create_nodes.rb

class CreateNodes < ActiveRecord::Migration
  def change
    create_table :nodes do |t|
      t.timestamps
    end
  end
end   

然后我想迁移以添加关系:

class AddNodesToNodes < ActiveRecord::Migration
  def change
    add_column :nodes, :parent_id, :integer
    # how do i add childen?
  end
end

如何在迁移中添加 has_many 关系?

最佳答案

您已完成所有需要做的事情。您可以在此页面中找到更多信息: enter image description here

来源:http://guides.rubyonrails.org/association_basics.html

node.parent 会发现 parent_id 是节点 id 并返回父节点。

node.children 会发现 parent_id 是节点 id 并返回 child 。

当你添加关系时,你可以在 Rails 4 中这样做:

## rails g migration AddNodesToNodes parent:belongs_to

class AddNodesToNodes < ActiveRecord::Migration
  def change
    add_reference :nodes, :parent, index: true
  end
end

关于ruby-on-rails - 如何为 belongs_to 本身的 Rails 模型编写迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711033/

相关文章:

ruby-on-rails - 连接两个事件记录结果(通过连接表)以返回一个新结果

ruby-on-rails - 向 Rails View 添加了下一个/上一个按钮。为什么 Next 会跳过某些实例?

ruby - 如何在 Ruby 中测试初始化​​参数的数量

ruby-on-rails - Rails 4 devise_invitable 邀请 token 无效

javascript - RequireJs + Rails 4

ruby-on-rails - Heroku 上 Rails 应用程序的请求排队时间较长

ruby-on-rails - Ruby on Rails - n :m many-to-many relation

ruby-on-rails - 仅在 Rails 的 View 中显示模型的非空白属性

ruby-on-rails - 如何在不提示输入密码的情况下部署 Capistrano?

ruby-on-rails - Searchkick 在 Travis CI 上失败