对于引用自身的类,ActiveRecord :: Migration和ActiveRecord :: Base看起来是什么样的。我正在建模一个对象,即"分叉"关闭现有记录并将该关系存储在:source字段中。那:source字段将包含primary_key:id的父亲。
答案 0 :(得分:1)
ActiveRecord不包含"预定义的"此类关系,但您可以使用has_many
和belongs_to
帮助程序自行定义。您需要添加外键,例如对模型my_parent_id
{我称之为Thing
):
rails g migration AddMyParentIdToThings my_parent:references
然后,您需要定义指定外键和类名的关系:
class Thing < ActiveRecord::Base
belongs_to :parent_thing, class_name: "Thing", foreign_key: :my_parent_id
has_many :child_things, class_name: "Thing", foreign_key: :my_parent_id
end
如果外键与关系名称匹配,并且附加{{1>,则可以省略:foreign_key
上的belongs_to
选项(不 has_many
)例如:
"_id"
答案 1 :(得分:0)
当我不得不做这样的事情时,我喜欢把它当作一个与自身联系的模型。
在您的迁移文件中,您只需将parent_id
和整数添加到该表/模型
class Category < ActiveRecord::Base
belongs_to :parent, :class_name => "Category", :foreign_key => :parent_id
has_many :children, :class_name => "Category", :foreign_key => :parent_id
end