我正在尝试通过传入一个值来使用 lambda 函数来执行 Rails 作用域:
"scope :for_rank, lambda {|rank| where('min_rank <= ? AND max_rank >= ?', rank, rank)}"
但是,max_rank 也有可能为空。在这种情况下,我希望查询只执行 最小排名 <= ? 部分。我怎样才能做到这一点?
示例:
"a.min_rank = 10"
"a.max_rank = 20"
"b.min_rank = 15"
"b.max_rank = nil"
我希望 for_rank(15) 的搜索应返回 a 和 b。
最佳答案
试试这个:
scope :for_rank, lambda {|rank| where('(min_rank <= ? AND max_rank IS NOT NULL AND max_rank >= ?) OR (min_rank <= ? AND max_rank IS NULL)', rank, rank, rank)}
关于sql - Rails SQL 查询如果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188761/