【问题标题】:Send email confirmation with devise使用设备发送电子邮件确认
【发布时间】:2015-06-13 15:32:28
【问题描述】:

我已经安装了设计和omniauth,让用户可以使用他们的Facebook 帐户注册(这可行)。现在我想在用户创建具有Facebook 登录功能的帐户后向他们发送电子邮件。

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

设计中的名称错误::RegistrationsController#create # 的未定义局部变量或方法 `confirmed_at'

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

提前致谢!

【问题讨论】:

  • 您是否将新列添加到数据库中的用户表中?您可能需要创建迁移文件和/或运行rake db:migrate

标签: ruby-on-rails ruby facebook devise


【解决方案1】:

您收到该错误消息的原因是因为黑盒设计确认功能使用了它假定存在于 User 模型上的字段。这意味着它假定您已确保数据库中存在用户表的列。您需要做的不仅仅是将可确认添加到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 运行您的迁移。

【讨论】:

  • 感谢您的回复我已经执行了您的帖子,现在我收到此错误:#<0x52fe9d8>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2019-01-21
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多