我正在尝试通过传入一个值来使用 lambda 函数来做一个 rails 范围:
"scope :for_rank, lambda {|rank| where('min_rank <= ? AND max_rank >= ?', rank, rank)}"
但是,max_rank 可能为空。在这种情况下,我希望查询只执行 min_rank <= ? 部分。我怎样才能做到这一点?
例子:
"a.min_rank = 10"
"a.max_rank = 20"
"b.min_rank = 15"
"b.max_rank = nil"
我希望 for_rank(15) 的搜索应该返回 a 和 b。