2011-01-24 4 views

答えて

19

この質問はあなたには、いくつかの移行似て書かれている場合;-)奇数1のようだ:そうのような:

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

を、あなたは、モデル内の変化がほとんど(考案する確認できる追加=>を渡して)言ったように

devise :database_authenticatable, :registerable, :confirmable 

(あなたはdidnの場合 ')あなたは今、いくつかのビューを生成することができます

rails generate devise:views 

あなたはアプリ/ VIに行くことができますews/devise/confirmations/new.html.erbを開き、それがどのように見えるかを確認したり変更したりしてください。確認できるがそのようになっている場合...すべてがうまくいった技術的ならば、それは作品べき

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

この条件のチェックが:さらに次の行があるアプリ/ビュー/工夫/確認/共有/ _links.erb =>検査することができますOOTB。新しいアカウントを作成した後は、確認メールが適切なリンクで送信される行が表示されます。これはトリガー:

 Rendered devise/mailer/confirmation_instructions.html.erb 

はそう、あなたがビット確認の戦略をカスタマイズする方法

それをカスタマイズすることができ、次の場所を持っていますか?何を達成したいのか正確な質問をしてください。あなたは宝石のパスを調べることができます。 /lib/devise/models/confirmable.rbにはいくつかのコメントが参考になるかもしれません。

よろしく

+0

+1。どうもありがとう。 – riship89

+4

V2のように移行のスタイルが古くなっていることに注意してください。 https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style – tibbon

16

すでにインストールしている場合、あなたのアプリに工夫し、代わりに実行する、後で「確認できる」を追加します:

rails generate devise:views 

ピョートルによって述べたように、

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ファイルの外観です:

+0

Tiloが示唆するようにマイグレーションを行う必要はありませんか? – Leahcim

+2

ああ、これは少しオフです。ここで作成されたビューはすべて役に立ちません。あなただけの本当に必要: '/アプリ/ビュー/確認できる/確認がアプリ/ビューを作成 作成確認できる/確認/ new.html.erb アプリ/ビューを作成/確認できる/メーラー/ confirmation_instructions.html.erb' – jackyalcine

+0

こんにちは、ドメインの正しい設定は何ですか?私のヒーローアプリのドメインですか? –

72

"可"を確認するには、あなたのモデルに追加するだけです。:

その後
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 

参照: Adding confirmable module to an existing site using Devise

を私はしお勧めしますソースコードを確認して確定確認の仕組みを確認してください:

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

あなたはまた、工夫にRailsCastをチェックすることができ

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

次それはDRYのためのGitHub

+0

これは答えとしてマークする必要があります。また、「http://stackoverflow.com/a/7577878/602588」(以下の回答)のビットを追加する必要があります。 – jackyalcine

+2

また、次の行を追加する必要があります。 add_column:users、:unconfirmed_email、:string – Calciphus

+0

は、Deviseの最新の変更ですか? – Tilo

2

上のサンプルアプリケーションを検索するための最良のだろうが、あなたはまた、/ configに/初期化子でメーラーの設定を置くことができますmail.rb like:

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

チェックアウトdevise wiki page。あなたの質問には完全な答えがあります。

config.action_mailer:

関連する問題