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 :database_authenticatable, :registerable, :confirmable
これで、いくつかのビューを生成できます(生成しなかった場合)
rails generate devise:views
app / views / desfirmations / new.html.erbにアクセスして、どのように表示されるかを確認するか、変更することができます。さらに、app / views /devise/confirmations/shared/_links.erbを調べることができます=>次の行があります:
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
この条件は、確認可能がオンになっているかどうかをチェックします。技術的には、すべてがうまくいけば、OOTBで動作するはずです。新しいアカウントを作成した後(ログに)、確認メールが適切なリンクで送信される行が表示されます。トリガー:
Rendered devise/mailer/confirmation_instructions.html.erb
少しカスタマイズできる次の場所があります
確認戦略をカスタマイズする方法は?何を達成したいのか、正確に質問してください。devisegempathを確認できます。/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 が送信する電子メールのメッセージを変更することもできます。
最後に、config.action_mailer.delivery_method と config.action_mailer.smtp_settings を app/config/environments/{environment_name}.rb ファイルに追加することを忘れないでください。これは私の 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 }
チェックアウトデバイスのwikiページ。あなたの質問に対する完全な答えがあります。
DRY の場合、次のようにメーラー構成を 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 }
上記の ActionMailer 設定を構成した後、config/environments/development.rb ファイルに最後の追加を行って、新しいユーザーの登録後に表示されるエラー ページを修正する必要がありました。
config.action_mailer.default_url_options = { :host => 'localhost' }
このソリューションの詳細: Heroku/devise - リンク先のホストがありません! :host パラメータを指定するか、default_url_options[:host] を設定してください