ruby-on-rails – 范围的真正好处是什么?

我浏览了超过10个页面,试图找到与任何其他返回ActiveRecord :: Relation的ActiveRecord类方法相比较的优点.

在下面的例子中,为什么范围比下面的替代方法更好:

#scope :pat1,lambda {{:conditions => ["name like ?",'J%']}}    
  #scope :pat2,lambda {{:conditions => ["id  > 5"]}}  

  def self.pat1
    where("name like ?",'J%')
  end  

  def self.pat2 
    where("id  > 5")
  end  

  def patx 
    self.class.pat1.pat2.first
  end

文档一遍又一遍地说,范围是有益的,因为它们可以链接

“所有范围方法都将返回一个ActiveRecord :: Relation对象,该对象将允许调用其他方法(如其他范围).
guides.rubyonrails.org

“范围比普通类方法更好的主要原因是它们可以用其他方法链接
http://ruby.railstutorial.org

…但上述替代方案也可以链接产生相同的结果.

只是想弄清楚在这里有没有皇帝的新衣服.即使从句法角度来看似乎没有任何好处.它们是否更快 – 有些来源模糊地表明.

解决方法

ActiveRecord作用域实际上只是语法糖包裹在最佳实践中,如前所述.

在Rails的2.x天,当他们被称为“named_scope”时,它们更重要.它们容易链接生成查询的条件.随着Rails 3.x与Arel的改进,创建查询关系的功能很简单,如您所说.范围只为可链接的预定义查询提供简单而优雅的解决方案.将模型顶部的所有范围提高可读性,并帮助显示模型的使用方式.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...