Ruby on rails 发送电子邮件确认与设计

Ruby on rails 发送电子邮件确认与设计,ruby-on-rails,ruby,facebook,devise,Ruby On Rails,Ruby,Facebook,Devise,我已经安装了Desive和omniauth,允许用户使用他们的facebook帐户注册(这很有效)。现在,我想在用户创建具有facebook登录功能的帐户时向其发送电子邮件 我还使用Actionmailer向用户发送基于触发器的电子邮件。由于我使用的是Desive,所以在我的用户模型中没有触发电子邮件的create方法,所以我想利用Desive的标准功能发送确认电子邮件。我已将confirmable添加到用户模型中,但现在出现以下错误: 设计::注册控制器#创建中的名称错误 未定义的局部变量或方

我已经安装了Desive和omniauth,允许用户使用他们的facebook帐户注册(这很有效)。现在,我想在用户创建具有facebook登录功能的帐户时向其发送电子邮件

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

设计::注册控制器#创建中的名称错误 未定义的局部变量或方法“已确认”#

我不明白错误信息。在我看来,Desive gem是一个黑匣子,我看不出错误是指哪个控制器。有没有比我更了解Desive gem的人的帮助


提前谢谢

您收到该错误消息的原因是,blackbox设计确认功能使用了它假定存在于
用户
模型上的字段。这意味着它假定您已确保数据库中存在users表的列。您需要做的不仅仅是将confirmable添加到
用户
模型中。您还需要在处为
confirmed\u添加迁移,然后添加
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
class addconfirmableToDevicetrue
结束
结束

然后使用
rake db:migrate

运行迁移是否将新列添加到数据库中的users表中?您可能需要创建迁移文件和/或运行
rake db:migrate
感谢您的回复我已经执行了您的帖子,现在我收到以下错误:未定义的局部变量或#的“未确认的电子邮件”方法。我现在需要添加另一个字段吗?哦,我错了,是的,你是对的。我将更新我的答案。如果你不想重新创建数据库,那么你必须生成另一个迁移文件,只需添加一个字段
unconfirmed\u email
。否则,您只需更新刚刚创建的
add\u confirmable\u to\u designe
迁移,然后重新运行迁移。好的,谢谢,我已经添加了额外的字段,不再出现错误。但是,我还没有收到任何电子邮件。我已经使用mailgun为开发和生产设置了actionmailer,这适用于其他电子邮件(不是Deave),但不适用于确认电子邮件。有什么建议吗?我不能马上确定。Desive应该使用actionmailer,因此如果其他电子邮件正常工作,它应该可以工作。我会检查rails日志,确保它看起来成功地发送了电子邮件。问一个新问题可能更容易解决这个问题。