【问题标题】:Rails4: syntax error, unexpected tLABEL scope :find_paidRails4:语法错误,意外的 tLABEL 范围:find_paid
【发布时间】:2015-12-09 17:32:54
【问题描述】:

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

所以,我写了

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

报错

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

怎么了?

【问题讨论】:

  • where和(之间不能有空格,也不能|paid|。希望对大家有帮助。

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


【解决方案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

【讨论】:

  • 谢谢安迪。在我发布这个之前,我也尝试了你的方法。然而,我犯了一个大错误。 where 和 ( . 之间不应有空格
  • 哇,很高兴听到 - 谢谢!! :) 是公司送的礼物,前段时间我工作过(迄今为止我工作过的最好的公司),它的 CEO 来自澳大利亚 :)
猜你喜欢
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
相关资源
最近更新 更多