如何访问受设计保护的方法?

时间:2014-02-05 01:56:34

标签: ruby-on-rails ruby devise ruby-on-rails-4

我正在使用Rails 4.0.2和Devise 3.2.2来处理用户注册/身份验证。我启用了:confirmable

如何在我的应用程序中访问/调用设计受保护的方法? 我正在尝试使用

中受保护的confirmation_period_expired?方法

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Confirmable#confirmation_period_expired%3F-instance_method

但我收到NoMethodError: protected method confirmation_period_expired?错误。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

通常不是一个好主意,但如果你绝对必须:

@user.send(:confirmation_period_expired?) 

会这样做。

答案 1 :(得分:1)

除了send,您可以在User上定义公共方法。此方法可以自行调用受保护的方法。

class User
  def is_confirmation_period_expired?
    self.confirmation_period_expired? # self is optional
  end
end

您可以在没有错误的情况下在用户上调用该方法:@user.is_confirmation_period_expired?