I am tring to create a scope which find out all contacts with 0 address. Got error message ArgumentError: tried to create Proc object without a block
when running command 'Contact.noaddress' in rails c.
Here is my contact model including scope:
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
and here's address model
class Address < ActiveRecord::Base
attr_accessible :city, :country, :postalcode, :region, :street
belongs_to :contact
end
Could somebody help me please?
It sounds like a (precedence issue?) referenced here.
If you change the scope to:
scope :noaddresses, (lambda do
joins(:addresses).where('addresses.created_at is null')
end)
or
scope :noaddresses, lambda { joins(:addresses).where('addresses.created_at is null') }
Also, I don't see where you're using the block argument |addresses|
. Did you forget to use it? Otherwise, you can remove it and its surrounding pipes.
Updated: I removed the |addresses|
argument and updated the query to be valid SQL syntax.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With