我想查找付款的所有订单= 1。
所以,我写了
class Order < ActiveRecord::Base
scope :find_paid, lambda { |paid| where (paid: 1)}
end
它给出了错误
意外的tLABEL范围:find_paid,lambda {| paid |其中(付费:1)} ^
有什么问题?
答案 0 :(得分:1)
这应该有效:
class Order < ActiveRecord::Base
scope :find_paid, -> { where(paid: 1) }
end
您不会将任何参数传递给lambda,因此不需要使用变量(|paid|
)。
如果您创建一个根据传递的参数返回某些内容的范围,您会发现传递一个有用的参数。请考虑以下示例:
scope :paid?, ->(paid) { where(paid: paid) }
您可以按如下方式使用此范围:
Order.paid?(1) # would return paid orders
Order.paid?(0) # would return unpaid orders