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

Hop*_*eam 3 ruby-on-rails ruby-on-rails-3.1

我如何参考以下内容?

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

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

Dav*_*ton 12

通常范围是在类之外链接的,如下所示:

Foo.recent_entries.posts # Or whatever.
Run Code Online (Sandbox Code Playgroud)

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

scope :children_of, lambda { |o| where("parent_id=?", o.id }
Run Code Online (Sandbox Code Playgroud)

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

parent.children
Run Code Online (Sandbox Code Playgroud)

这将是一个实例方法,但是:这看起来像是一个基本的自引用关联,而不是需要范围的东西.

如果你正在制作一棵树,那就有宝石,例如,封闭树,祖先和其他.