我以前有以下模型方法,我使用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>

有人看到我做错什么了吗?

最佳答案

你应该像这样使用它:

if @invitation.expired?("cycle")
  # some code here.

我假设这是因为控制器代码中出现了undefined local variable or method 'cycle',当您尝试使用纯cycle而不是字符串"cycle"时,就会发生这种情况。

关于ruby-on-rails - 如何创建此模型元方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31896316/

10-15 09:13