我开始使用类方法作用域,因为我需要将一些参数传递到作用域中。以 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 错误的未定义方法。我该如何解决这个问题?
最佳答案
这会返回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
关于ruby-on-rails - rails : how to make class method scope to handle nil arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628834/