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

问题描述 投票:3回答:1

我如何参考以下内容?

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

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

ruby-on-rails ruby-on-rails-3.1
1个回答
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等。

© www.soinside.com 2019 - 2024. All rights reserved.