2013-04-15 6 views
7

Witajcie, mam zamiar utworzyć zakres, który znajdzie wszystkie kontakty z adresem 0. Got error message ArgumentError: tried to create Proc object without a block po uruchomieniu polecenia "Contact.noaddress" w szynach.Zakres, ale komunikat o błędzie ArgumentError: próbował utworzyć obiekt Proc bez bloku

oto mój model styk tym zakres

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 

a oto adres modelu

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

Może ktoś mi pomóc proszę? Wielkie dzięki.

Odpowiedz

15

To brzmi jak (precedencja?) Z odniesieniem here.

przypadku zmiany zakresu do:

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

lub

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

Również nie widzę gdzie używasz argumentu bloku |addresses|. Czy zapomniałeś go użyć? W przeciwnym razie możesz go usunąć i otaczające go rury.

Zaktualizowano: Usunięto argument |addresses| i zaktualizowałem zapytanie, aby było poprawną składnią SQL.

+0

Dziękuję bardzo za pomoc. ale dostał błąd "ArgumentError: niepoprawna liczba argumentów (0 za 1)" nawet ja użyłem named_scope –

+0

Argumenty address należy podać w noaddresses (addresses_arguement) lub usunąć. – stringsn88keys