最新版本的Devise默认未启用“:confirmable”功能。我已经向User模型添加了相应的列,但找不到任何启用“:confirmable”的代码示例。
在哪里可以找到好的示例或我需要什么代码来启用它?
最新版本的Devise默认未启用“:confirmable”功能。我已经向User模型添加了相应的列,但找不到任何启用“:confirmable”的代码示例。
在哪里可以找到好的示例或我需要什么代码来启用它?
要“启用”确认功能,您只需要将其添加到您的模型中,例如:
class User
# ...
devise :confirmable , ....
# ...
end
接下来,您需要创建并运行一个迁移,将所需的列添加到您的模型中:
# 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将确认模块添加到现有网站。
我建议查看源代码以了解Confirmable的工作原理:
https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb
您还可以查看有关 Devise 的 RailsCast:
http://railscasts.com/episodes/209-introducing-devise
接下来最好在GitHub上搜索示例应用程序
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
正如你所说,对模型进行小的更改(向devise添加额外的=> :confirmable)如下:
devise :database_authenticatable, :registerable, :confirmable
现在您可以生成一些视图(如果您没有)
rails generate devise:views
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
这个条件检查确认功能是否已经启用,因此...从技术上讲,如果一切正常,它应该可以直接使用。创建新账户后,在日志中,您应该看到发送确认邮件的行,并带有相应的链接。它会触发:
Rendered devise/mailer/confirmation_instructions.html.erb
所以你可以在下一个地方自定义它一点
如何自定义确认策略?请问您想要实现什么样的确切问题。您可以检查Devise gem路径。在/lib/devise/models/confirmable.rb中,一些注释可能会有帮助。
祝好
如果您已经将Devise安装到您的应用程序中,想要稍后添加“confirmable”,而不是运行:
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 }
create app/views/confirmable/confirmations create app/views/confirmable/confirmations/new.html.erb create app/views/confirmable/mailer/confirmation_instructions.html.erb
- jackyalcineActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => '[redacted]',
:user_name => '[redacted]',
:password => '[redacted]',
:authentication => 'plain',
:enable_starttls_auto => true }
# add_column:users,:unconfirmed_email,:string #仅在使用reconfirmable时
- JTE