加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:06:08 所属栏目:百科 来源:网络整理
导读:有人可以解释这种方法的作用和可以传递给什么? scoped(options = nil)Returns an anonymous scope. 还有什么范围方法呢?阅读文档后我不明白. 解决方法 在ActiveRecord中,所有查询构建方法(如where,order,join,limit等)都会返回所谓的范围.只有当您调用像所
有人可以解释这种方法的作用和可以传递给什么?
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读