如何在命名范围内引用self? - Rails 3.1初学者

时间:2011-11-12 14:41:05

标签: ruby-on-rails ruby-on-rails-3.1

如何在以下引用自我?

scope :children, where("parent_id = ?", self.id)

自我似乎在这种情况下不起作用

1 个答案:

答案 0 :(得分:10)

通常范围是在课堂上链接的,如下所示:

Foo.recent_entries.posts # Or whatever.

你需要一个lambda范围来获得相同的行为:

scope :children_of, lambda { |o| where("parent_id=?", o.id }

我假设您正在尝试获取特定实例的子项:

parent.children

这将是一个实例方法,但是:这看起来像一个基本的self-referencing association,而不是需要范围的东西。

如果你正在制作一棵树,那就有宝石,例如closure-treeancestry和其他。