rails 4:祖先工作不正常?

马克·科斯蒂奇(Marko Krstic)

尝试执行一个对象的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章