13

我正在尝试创建一个范围,以找出所有地址为 0 的联系人。Got error message ArgumentError: tried to create Proc object without a block在 rails c 中运行命令“Contact.noaddress”时。

这是我的联系模型,包括范围:

class Contact < ActiveRecord::Base
  attr_accessible :email, :firstname, :lastname, :mobilephone, :fullname
  has_many :addresses
  validates_presence_of :firstname, :lastname


   scope :noaddressed, lambda do |addresses|
    joins(:addresses).where('addresses.created_at.empty?', true)
   end
end

这是地址模型

class Address < ActiveRecord::Base
  attr_accessible :city, :country, :postalcode, :region, :street
  belongs_to :contact
end

有人可以帮我吗?

4

1 回答 1

28

这听起来像是这里引用的(优先级问题?) 。

如果将范围更改为:

scope :noaddresses, (lambda do
  joins(:addresses).where('addresses.created_at is null')
end)

或者

scope :noaddresses, lambda { joins(:addresses).where('addresses.created_at is null') }

另外,我看不到您在哪里使用 block 参数|addresses|。你忘记使用了吗?否则,您可以将其及其周围的管道移除。

更新:我删除了|addresses|参数并将查询更新为有效的 SQL 语法。

于 2013-04-15T17:11:04.040 回答