范围但错误消息ArgumentError:尝试创建没有块的Proc对象

时间:2013-04-15 13:39:20

标签: ruby-on-rails-3 scope

大家好我想创建一个范围,找出所有0地址的联系人。在rails c。

中运行命令'Contact.noaddress'时Got error message ArgumentError: tried to create Proc object without a block

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

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

有人可以帮我吗?非常感谢。

1 个答案:

答案 0 :(得分:19)

听起来像(优先问题?)引用了here

如果您将范围更改为:

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

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

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

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