scope

2015-06-07  本文已影响50人  kamionayuki

scope一般用在model中

class Order < ActiveRecord::Base
    default_scope -> { order(created_at: :desc) }
end

此时调用Order.all,会把order按照created_at这个字段进行倒序排列。
如果有多个default_scope,那么这些default_scope会一起生效

class Order < ActiveRecord::Base
      default_scope -> { order(created_at: :desc) }
      default_scope -> { where(price: 100..1000) }
end

此时调用Order.all,则会把price在100到1000之间的order查询出来,然后再按照created_at这个字段进行倒序排列。

end

`Order`中定义了一个`today`的`scope`,如何调用这个`scope`?
```ruby
Order.today

这样就可以了。感觉scope相当于一个类方法

class Order < ActiveRecord::Base
  private
  def self.today
    Order.where(created_at: Time.now.midnight..(Time.now.midnight + 1.day))
  end
end
上一篇 下一篇

猜你喜欢

热点阅读