0

我目前正在根据有关标记为仅电子邮件注册的设计教程建立一个项目,并且似乎遇到了一个我无法解决的特定错误。除了第 3 步找不到我添加的自定义方法(称为confirm. 我已经告诉 Devise 使用

devise_for :users, :controllers => {:confirmations => 'confirmations'}

对于我的用户插件,但它忽略了我的控制器。

我有一个名为 Confirmations_controller.rb 的控制器,它包含以下代码:

class ConfirmationsController < Devise::ConfirmationsController
  def show
    self.resource = resource_class.find_by_confirmation_token(params[:confirmation_token])
    super if resource.confirmed? 
  end

  def confirm
    self.resource = resource_class.find_by_confirmation_token(params[resource_name][:confirmation_token])
    if resource.update_attributes(params[resource_name].except(:confirmation_token)) && resource.password_match?
      self.resource = resource_class.confirm_by_token(params[resource_name][:confirmation_token])
      set_flash_message :notice, :confirmed
      sign_in_and_redirect(resource_name, resource)
    else
      render :action => "show"
  end
end

确切的错误是:

undefined method `confirmed?' for #<User:0x425f130>

我正在使用 rails 3.2.9 版并设计 2.2.1 版

我只是在学习 rails 和 ruby​​,所以我真的希望有人可以帮助我。

4

1 回答 1

2

错误消息是关于confirmed?未定义的方法。您添加的自定义方法是confirm

confirmed?方法由confirmable设备模块添加

正如 Jesse 在上面的评论中提到的,为 User 类启用“confirmable”模块。

示例用户类:

class User < ActiveRecord::Base
  devise ..., :confirmable, ...

  ...

end
于 2013-01-13T12:23:29.683 回答