ruby-on-rails - 使用设备发送电子邮件确认

标签 ruby-on-rails ruby facebook devise

我已经安装了设计和 omniauth 来让用户使用他们的 facebook 帐户注册(这有效)。现在我想在用户创建了具有 facebook 登录功能的帐户时向他们发送一封电子邮件。

我还使用 Actionmailer 向用户发送基于触发器的电子邮件。由于我使用的是 devise,因此我的用户模型中没有创建方法来触发电子邮件,因此我想利用 devise 的标准功能来发送确认电子邮件。我已将 confirmable 添加到用户模型,但现在出现以下错误:

设计中的 NameError::RegistrationsController#create #

的未定义局部变量或方法“confirmed_at”

我不明白错误信息。在我看来,devise gem 是一个相当黑的盒子,我看不出错误指的是哪个 Controller 。比我更了解设计 gem 的人有什么帮助吗?

提前致谢!

最佳答案

您收到该错误消息的原因是因为黑盒设计确认功能使用它假定存在于 User 模型中的字段。这意味着它假定您已确保用户表的列存在于数据库中。您需要做的不仅仅是将 confirmable 添加到 User 模型。您还需要为 confirmed_at 添加迁移,然后为 rake db:migrate 添加迁移。

生成迁移:

rails g migration add_confirmable_to_devise

确保迁移的内容与此匹配:

class AddConfirmableToDevise < ActiveRecord::Migration
  def change
    change_table(:users) do |t| 
      t.string   :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
      t.string   :unconfirmed_email
    end
    add_index :users, :confirmation_token, :unique => true 
  end
end

然后使用 rake db:migrate 运行迁移。

关于ruby-on-rails - 使用设备发送电子邮件确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29518655/

相关文章:

mysql - 根据数据库记录过滤数组

ruby-on-rails - 使用 Ruby 问题创建类方法

ruby-on-rails - Rails错误: uninitialized constant User::Nil

ruby-on-rails - 如果 : -> { status_change? && 结束了,你怎么称呼? } 在 ruby 中?

ruby - Rspec 有 (n).items 未定义的方法

android - 如何注册应用邀请对话的回调

Facebook Secure Canvas URL 要求和遗留应用程序

node.js - yarn 安装因 node-sass/node-modules 失败

ruby-on-rails - Ruby:在一个文件中放置多个类是否可以接受?

ruby-on-rails - 有条件的单表继承