Ancestry gem说“未定义的方法'祖先'为......”

时间:2013-12-13 15:26:07

标签: ruby-on-rails ruby model tree ancestry

我在gemfile中安装了祖先宝石

gem "ancestry", "~> 2.0.0"

模特:

class Category < ActiveRecord::Base
  attr_accessible :..., :name, :..., :ancestry, :..., :...
  #acts_as_tree
  has_ancestry cache_depth: true
  has_many :cars
end

当我在视图中加载相应的类别时:

- category = Category.where('my_category_id = ?', @game.car_category_id)
%div= category.inspect

输出

[#<Category id: 58, name: "Name", ..., created_at: "2013-11-22 15:00:01", updated_at: "2013-11-24 14:54:06", ancestry: "7", car_category_id: 6205>]

因此,祖先列中的值为 7 。 当我尝试显示此值 = category.ancestry 时,结果为:

undefined method `ancestry' for #<ActiveRecord::Relation:0x007fce5e61dcb0>

当我尝试检查那个值时也一样......

我在这里做错了什么?为什么我无法使用祖先值?

谢谢

1 个答案:

答案 0 :(得分:0)

获取一个真实的实例,所以替换:

category = Category.where('my_category_id = ?', @game.car_category_id)

使用:

category = Category.where('my_category_id = ?', @game.car_category_id).first
不过,这应该在您的控制器中完成。不在你看来。 (并使用范围不会伤害:))