Rails4:语法错误,意外的tLABEL范围:find_paid

时间:2015-12-09 17:32:55

标签: ruby-on-rails ruby-on-rails-4 activerecord scope

我想查找付款的所有订单= 1。

所以,我写了

class Order < ActiveRecord::Base
scope :find_paid, lambda { |paid| where (paid: 1)}
end

它给出了错误

  

意外的tLABEL范围:find_paid,lambda {| paid |其中(付费:1)} ^

有什么问题?

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