尝试执行一个对象的root_id时遇到问题。类看起来像:
# == Schema Information
#
# id :integer not null, primary key
# name :string(255)
# ancestry :string(255)
class PackageCategory < ActiveRecord::Base
has_ancestry
end
该数据库表看起来如下:
id name ancestry
1 Root NULL
2 Child 1-1 1
3 Child 1-2 1
4 Child 2-1 2
5 Child 3-1 4
当我做:
@p = PackageCategory.find 5
puts @p.root_id
我正进入(状态: 4
当我输入时:
@p.path_ids
我正进入(状态: [4, 5]
puts @p.name
给我Child 3-1
(这是正确的)
那么,哪里出了问题?我不应该在第一种情况下1
发生在第二种情况下[1, 2, 4, 5]
吗?
在这一点上,我可以说该ancestry
列的格式不正确。因为,如果我查看ID为4(孩子2-1)的记录,其祖先说他的父母是ID为2的记录,而记录2为根记录。那是错误的。
祖先列的格式为“ root_id / son_id / son_id /.../ parent_of_current_record_id”。
记录ID 4的祖先列必须设置为:
pc = PackageCategory.find(4)
pc.parent = PackageCategory.find(2)
pc.save
或者
pc.parent_id = 2
pc.save
和祖先的宝石建立祖先列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句