3

Rails 指南声明可以在关联上调用范围。但再进一步,它指出scoped返回ActiveRecord::Relation对象的方法“可能会派上用场......在关联上”。如果可以在关联上调用范围,则scoped提供了哪些附加功能?

4

1 回答 1

2

scoped返回一个匿名范围。从 API 文档:

在程序生成复杂查询时,匿名范围往往很有用,其中将中间值(范围)作为一等对象传递很方便。

这是示例:

posts = Post.scoped
posts.size # Fires "select count(*) from  posts" and returns the count
posts.each {|p| puts p.name } # Fires "select * from posts" and loads post objects

fruits = Fruit.scoped
fruits = fruits.where(:color => 'red') if options[:red_only]
fruits = fruits.limit(10) if limited?
于 2013-02-21T16:18:05.833 回答