如何启用:在devise中可以确认?

Devise的最新版本没有:默认启用确认。 我已经将相应的列添加到用户模型,但找不到如何启用的任何代码示例:可确认。

我在哪里可以find一个很好的例子,或者我需要什么代码来启用它?

要“启用”可以确认,您只需将其添加到您的模型,例如:

class User # ... devise :confirmable , .... # ... end 

之后,您将不得不创build并运行一个将所需列添加到模型的迁移:

 # rails g migration add_confirmable_to_devise class AddConfirmableToDevise < ActiveRecord::Migration 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 add_index :users, :confirmation_token, :unique => true end def self.down remove_index :users, :confirmation_token remove_column :users, :unconfirmed_email remove_column :users, :confirmation_sent_at remove_column :users, :confirmed_at remove_column :users, :confirmation_token end end 

请参阅: 使用Devise将可确认模块添加到现有站点

我build议检查源代码,看看Confirmable如何工作:

https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb

你也可以在Devise上检查RailsCast:

http://railscasts.com/episodes/209-introducing-devise

接下来,最好在GitHub上search示例应用程序

这个问题似乎很奇怪;-)如果你写了一些迁移:

  change_table(:users) do |t| t.confirmable end add_index :users, :confirmation_token, :unique => true 

正如你所说的模型中的小变化(通过额外的=>:可确定的devise)如此:

  devise :database_authenticatable, :registerable, :confirmable 

你现在可以产生一些意见(如果你没有)

  rails generate devise:views 

你可以去app / views / devise / confirmations / new.html.erb并检查它的外观或改变它。 此外,您可以检查应用程序/视图/devise/确认/共享/ _links.erb =>有线:

  <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> 

这种情况检查是否可以确认打开所以…技术上,如果一切顺利,它应该工作OOTB。 在创build新帐户后 – 在日志 – 你应该看到确认邮件与适当的链接发送线路。 它触发:

  Rendered devise/mailer/confirmation_instructions.html.erb 

所以你有下一个地方,你可以定制一点

如何定制确认策略? 请问确切的问题你想达到什么目的。 你可以检查devise的gempath。 在/lib/devise/models/confirmable.rb中有些意见可能会有所帮助。

问候

如果您已经将devise安装到您的应用中,并且希望稍后添加“可确认”,而不是运行:

 rails generate devise:views 

正如Piotr所说的那样

 rails generate devise:views confirmable 

只产生“确认”所需的观点。 你会看到这样的输出:

 rails generate devise:views confirmable invoke Devise::Generators::SharedViewsGenerator create app/views/confirmable/mailer create app/views/confirmable/mailer/confirmation_instructions.html.erb create app/views/confirmable/mailer/reset_password_instructions.html.erb create app/views/confirmable/mailer/unlock_instructions.html.erb create app/views/confirmable/shared create app/views/confirmable/shared/_links.erb invoke form_for create app/views/confirmable/confirmations create app/views/confirmable/confirmations/new.html.erb create app/views/confirmable/passwords create app/views/confirmable/passwords/edit.html.erb create app/views/confirmable/passwords/new.html.erb create app/views/confirmable/registrations create app/views/confirmable/registrations/edit.html.erb create app/views/confirmable/registrations/new.html.erb create app/views/confirmable/sessions create app/views/confirmable/sessions/new.html.erb create app/views/confirmable/unlocks create app/views/confirmable/unlocks/new.html.erb 

然后,您可以直接在项目中访问这些文件,以便像应用程序一样对其进行设置。 您还可以通过生成的邮件程序视图更改Devise发送的电子邮件中的消息。

最后,别忘了在app / config / environments / {environment_name} .rb文件中添加config.action_mailer.delivery_method和config.action_mailer.smtp_settings。 这是我的production.rb文件的样子:

  config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => '[redacted]', :user_name => '[redacted]', :password => '[redacted]', :authentication => 'plain', :enable_starttls_auto => true } 

签出devise维基页面 。 有一个完整的答案你的问题。

对于干,你也可以把邮件configuration在config / initializers / mail.rb中,如:

 ActionMailer::Base.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => '[redacted]', :user_name => '[redacted]', :password => '[redacted]', :authentication => 'plain', :enable_starttls_auto => true } 

在configuration上面描述的ActionMailer设置之后,我必须最后添加一个config / environments / development.rb文件来修复注册新用户后出现的错误页面:

config.action_mailer.default_url_options = {:host =>'localhost'}

有关此解决scheme的更多详细信息: Heroku / devise – 缺less主机链接到! 请提供:host参数或设置default_url_options [:host]