2013-04-15 21 views
7

Xin chào các bạn, tôi đang tìm cách tạo một phạm vi tìm ra tất cả các liên hệ có địa chỉ 0. Got error message ArgumentError: tried to create Proc object without a block khi chạy lệnh 'Contact.noaddress' trong đường ray c.Phạm vi nhưng thông báo lỗi ArgumentError: đã cố gắng tạo đối tượng Proc không có khối

Dưới đây là mô hình liên lạc của tôi bao gồm phạm vi

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 

và đây là địa chỉ mô hình

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

ai đó có thể giúp tôi xin vui lòng? Cảm ơn rất nhiều.

Trả lời

15

Có vẻ như một (vấn đề ưu tiên?) Được tham chiếu here.

Nếu bạn thay đổi phạm vi để:

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

hoặc

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

Ngoài ra, tôi không thấy nơi bạn đang sử dụng đối số khối |addresses|. Bạn đã quên sử dụng nó chưa? Nếu không, bạn có thể tháo nó và các ống xung quanh.

Đã cập nhật: Tôi đã xóa đối số |addresses| và cập nhật truy vấn thành cú pháp SQL hợp lệ.

+0

Cảm ơn bạn rất nhiều vì đã giúp đỡ. nhưng có lỗi 'ArgumentError: sai số đối số (0 cho 1)' ngay cả khi tôi đã sử dụng named_scope –

+0

Đối số địa chỉ cần được cung cấp trong noaddresses (addresses_arguement) hoặc bị loại bỏ. – stringsn88keys

Các vấn đề liên quan