为了更好的可读性,可以将其转换为使用符号和运算符表示法:
scope :visible, where("is_hidden = false")
scope :current, where("exp_date IS NULL OR exp_date > " + timestamp)
将转换为以下内容:
scope :active, where( :is_hidden => false,
(:exp_date => nil || :exp_date > timestamp)
)
抱歉搞砸了语法(我是ruby的新手)
答案 0 :(得分:0)
我觉得我正在窃取人们评论你的问题的荣耀,但这也是一个可能的解决方案:
使用squeel,您可以编写范围如下:
def self.active
where{!is_hidden}
end
def self.current(timestamp)
where{exp_date.nil? | exp_date > timestamp}
end