在了解详细信息之前。
问题1:-- 这里的scope是什么意思(即named **scope)?**
使用命名范围有什么好处?
现在:-
来自 Agile Development with Rails 一书:--
class Order < ActiveRecord::Base
named_scope :last_n_days, lambda { |days| {:conditions =>
['updated < ?' , days] } }
named_scope :checks, :conditions => {:pay_type => :check}
end
这样一个命名范围将使查找上周的订单值(value)成为一个 快照。
orders = Orders.last_n_days(7)
范围也可以合并
orders = Orders.checks.last_n_days(7)
为什么我们在这里使用 named_scope。我们可以使用方法来做同样的事情。我们使用 named_scope 有什么特别之处。
最佳答案
我们得到更短、可链接且更易读的代码:
orders = Orders.checks.last_n_days(7)
比
更具可读性、更短且不可链接orders = Orders.all :conditions => ["updated < ? and pay_type='check'", 7]
在 Rails3 中优势会更大,因为 arel .有关更多信息,我建议观看 Railscasts:
- 108 named_scope (Rails 2 的一些基础知识)
- 202 Active Record Queries in Rails 3 (Rails 3 的一些基础知识)
- 215 Advanced Queries in Rails 3 (rails 3 中的一些高级主题)
关于ruby-on-rails - Rails 中命名作用域的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2919730/