8

Trong ứng dụng Rails3 của tôi, tôi có phạm vi AR đòi hỏi 3 thông sốsử dụng nhiều params phạm vi trong Rails3

Ex: Tôi đang cố gắng để có được một chi tiết lỗi cho một module đưa ra giữa hai mã giá trị

#select * from error_codes where error_module_id=1 and code >0 and code < 100 

scope :latest_error_code, lambda{ |module_id, min, max| 
    {:conditions => "error_module_id=#{module_id} and code >= #{min} and code <= #{max}"} 
} 

trong giao diện điều khiển của tôi, tôi làm

ErrorCode.latest_error_code(1,0,100) 

Nhưng khi tôi cố gắng thực hiện điều này, tôi nhận được lỗi sau

multiple values for a block parameter (3 for 1) 

và khi tôi đã làm một số Goggling, nó dường như là phạm vi AR doent hỗ trợ nhiều thông số

1 - là nó có đúng không? (AR doent hỗ trợ nhiều tham số cho phạm vi) 2 - Có cách nào khác thay thế không? 3 - Tôi có làm gì sai ở đây không?

cảm ơn trước

+0

I * tin * này hiện đang làm việc với Ruby 1.9+. Nó hoạt động tốt trên Ruby 2.2. –

Trả lời

10

Từ Active Record Query Interface Guide:

Sử dụng một phương pháp học là cách ưa thích để chấp nhận lập luận cho phạm vi.

Vì vậy, bạn có thể muốn một cái gì đó như thế này:

def self.latest_error_code(module_id, min, max) 
    where(
     'error_module_id = :module_id and code between :min and :max', 
     :module_id => module_id, :min => min, :max => max 
    ) 
} 
+0

hoạt động hoàn hảo, cảm ơn rất nhiều – sameera207

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