我开始使用类方法范围,因为我需要将一些参数传递给范围。以Rails指南为例:
def self.1_week_before(time)
where("created_at < ?", time)
end
然而,在我的网站中,有时参数可能为零,在这种情况下,我想绕过该范围并转到链中的下一个范围。
我在方法中添加了if条件:
def self.1_week_before(time)
if time
where("created_at < ?", time)
end
end
但是当我在范围链接中使用此方法时,它将为nil:NilClass错误提供未定义的方法。我该如何解决这个问题?
答案 0 :(得分:4)
这会返回nil
,因此您在链接时会收到错误:
def self.1_week_before(time)
if time
where("created_at < ?", time)
end
end
为了防止这种情况,您可以返回scoped
:
def self.1_week_before(time)
if time
where("created_at < ?", time)
else
scoped
end
end