红宝石轨道 – 轨道上的作用域和示波器

前端之家收集整理的这篇文章主要介绍了红宝石轨道 – 轨道上的作用域和示波器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以解释这种方法的作用和可以传递给什么?
scoped(options = nil)
Returns an anonymous scope.

还有什么范围方法呢?阅读文档后我不明白.

解决方法

在ActiveRecord中,所有查询构建方法(如where,order,join,limit等)都会返回所谓的范围.只有当您调用像所有或者第一次的kicker方法,才会执行累积查询,并返回数据库中的结果.

作用域类方法也返回一个范围.返回的范围默认为空意味着结果集将不受任何限制,意味着如果执行查询,则将返回所有记录.
您可以使用它来提供一个“空”的替代方法,如在查询_by_date示例中的MurifoX.
或者您可以使用它将多个条件组合成一个方法调用,例如:

Model.scoped(:conditions => 'id < 100',:limit => 10,:order => 'title ASC')

# which would be equivalent to
Model.where('id < 100').limit(10).order('title ASC')

范围类方法允许您定义还返回范围的类方法,例如:

class Model
  scope :colored,lambda {|col|
    where(:color => col)
  }
end

可以这样使用:

Model.colored

范围的好处是,您可以根据需要组合它们(几乎),所以以下是绝对可能的:

Model.red.where('id < 100').order('title ASC').scoped(:limit => 10)

我也强烈建议阅读http://guides.rubyonrails.org/active_record_querying.html

原文链接:https://www.f2er.com/ruby/272646.html

猜你在找的Ruby相关文章