在Ruby on Rails 4中使用设计宝石确认电子邮件 - 错误:未定义的局部变量或方法`confirmed_at&#39;对于#<user:0x007fa52bb0ea50> </user:0x007fa52bb0ea50>

时间:2014-04-21 17:43:22

标签: ruby-on-rails ruby devise

我已按照https://github.com/plataformatec/devise/wiki/How-To%3a-Add-%3aconfirmable-to-Users中的步骤操作但是我收到错误: Devise中的NameError :: RegistrationsController#在提交注册时为#创建未定义的局部变量或方法`confirmed_at'形成。我如何在Ruby on Rails 4中创建一个包含devise gem的确认电子邮件?以及还需要什么其他要求?这是我的代码目前的样子:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :pins
  validates :name, presence: true
  validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+edu)\z/ }    
end

class AddConfirmableToDevise < ActiveRecord::Migration
  def change
    change_table(:users) do |t| 
      t.confirmable 
    end
    add_index  :users, :confirmation_token, :unique => true 
  end
def self.up
    add_column :users, :confirmation_token, :string
    add_column :users, :confirmed_at, :datetime
    add_column :users, :confirmation_sent_at, :datetime
    # add_column :users, :unconfirmed_email, :string # Only if using reconfirmable
    add_index :users, :confirmation_token, :unique => true
    # User.reset_column_information # Need for some types of updates, but not for update_all.
    # To avoid a short time window between running the migration and updating all existing
    # users as confirmed, do the following
    User.update_all(:confirmed_at => Time.now)
    # All existing user accounts should be able to log in after this.
  end

  def self.down
    remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
    # remove_columns :users, :unconfirmed_email # Only if using reconfirmable
  end
end

1 个答案:

答案 0 :(得分:1)

您是否进行了必要的迁移以向用户添加可确认模块?

Devise Confirmable Wiki

编辑:我编辑了你的Rails迁移:

class AddConfirmableToDevise < ActiveRecord::Migration


def up
    add_column :users, :confirmation_token, :string
    add_column :users, :confirmed_at, :datetime
    add_column :users, :confirmation_sent_at, :datetime
    # add_column :users, :unconfirmed_email, :string # Only if using reconfirmable
    add_index :users, :confirmation_token, :unique => true
    # User.reset_column_information # Need for some types of updates, but not for update_all.
    # To avoid a short time window between running the migration and updating all existing
    # users as confirmed, do the following
    User.update_all(:confirmed_at => Time.now)
    # All existing user accounts should be able to log in after this.
  end

  def down
    remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
    # remove_columns :users, :unconfirmed_email # Only if using reconfirmable
  end
end