Có thể viết một phạm vi với các đối số tùy chọn để tôi có thể gọi phạm vi có và không có đối số không?Có thể có phạm vi với các đối số tùy chọn không?
Cái gì như:
scope :with_optional_args, lambda { |arg|
where("table.name = ?", arg)
}
Model.with_optional_args('foo')
Model.with_optional_args
tôi có thể kiểm tra trong khối lambda nếu một arg được đưa ra (như được mô tả bởi Unixmonkey) nhưng trên gọi phạm vi mà không cãi nhau tôi đã nhận một ArgumentError: wrong number of arguments (0 for 1)
Bạn sẽ không muốn bao gồm một dự phòng khi không args được thông qua? –
Tôi gặp lỗi nếu tôi không vượt qua một đối số: ArgumentError: sai số đối số (0 cho 1) – tonymarschall
Bạn có thể sử dụng Proc.new thay vì lambda để tránh lỗi đối số. Xem thảo luận cũ này về [this] (https://rails.lighthouseapp.com/projects/8994/tickets/90-enhancement-add-support-for-named-scopes-with-optional-arguments) – Christian