在我的Rails3应用程序中,我有AR范围,需要3个参数
Ex:我正在尝试在两个代码值之间获取给定模块的错误详细信息
#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}"}
}
在我的控制台中我做了
ErrorCode.latest_error_code(1,0,100)
但是当我尝试执行此操作时,我收到以下错误
multiple values for a block parameter (3 for 1)
当我做了一些护目镜时,似乎AR范围内部一直支持多个参数
1 - 这是真的吗? (AR doent支持范围的多个参数) 2 - 还有其他选择吗? 3 - 我在这里做错了吗?
提前致谢
答案 0 :(得分:10)
来自Active Record Query Interface Guide:
使用类方法是接受范围参数的首选方法。
所以你可能想要更像这样的东西:
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
)
}