Deviseの最新バージョンでは、デフォルトで:confirmableが有効になっていません。それぞれの列をユーザーモデルに既に追加しましたが、: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/devise/confirmations/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
それで、あなたはそれを少しカスタマイズできる次の場所を得ました
確認戦略をカスタマイズするには?何を達成したいのか正確に質問してください。考案のgemパスを確認できます。 /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ファイルに最後に1つ追加して、新しいユーザーの登録後に表示されるエラーページを修正する必要がありました。
config.action_mailer.default_url_options = {:Host => 'localhost'}
このソリューションの詳細: Heroku/devise-リンクするホストがありません!:Hostパラメーターを指定するか、default_url_options [:Host]を設定してください