我曾经使用过以下模型方法,我使用if @invitation.invite_expired? ...
调用了
def invite_expired?
cycle_invite_sent_at < 2.hours.ago
end
因为我想将此方法用于多个过期检查,所以我尝试按如下方式创建“meta”方法:
def expired?(what)
check = send("#{what}_invite_sent_at")
check < 2.hours.ago #Also tried "self.check" but that made no difference.
end
我使用if @invitation.expired?(cycle) ...
调用此方法。但是,现在各种测试都失败了:
NameError: undefined local variable or method `cycle' for #<InvitationsController:0x0000000a5e8d50>
有谁看到我在这里做错了什么?
答案 0 :(得分:3)
您应该像以下一样使用它:
if @invitation.expired?("cycle")
# some code here.
我假设这是因为在控制器代码中引发了undefined local variable or method 'cycle'
,当您尝试使用普通cycle
而不是字符串"cycle"
时,它会发生。