44

Devise の最新バージョンでは、デフォルトで :confirmable が有効になっていません。それぞれの列を User モデルに既に追加しましたが、:confirmable を有効にする方法のコード例が見つかりません。

良い例はどこにありますか、またはそれを有効にするために必要なコードは何ですか?

4

6 に答える 6

75

確認可能を「有効」にするには、モデルに追加する必要があります。例:

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でサンプルアプリケーションを検索するのが最適です。

于 2011-10-04T21:49:26.507 に答える
19

この質問は奇妙なもののようです;-)同様にいくつかの移行を書いた場合:

    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にいくつかのコメントが役立つかもしれません。

よろしく

于 2011-01-25T18:18:25.123 に答える
17

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  }
于 2011-09-28T03:09:05.173 に答える
9

チェックアウトデバイスのwikiページ。あなたの質問に対する完全な答えがあります。

于 2012-12-10T20:26:20.773 に答える
2

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  }
于 2011-11-06T05:16:03.647 に答える
0

上記の ActionMailer 設定を構成した後、config/environments/development.rb ファイルに最後の追加を行って、新しいユーザーの登録後に表示されるエラー ページを修正する必要がありました。

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

このソリューションの詳細: Heroku/devise - リンク先のホストがありません! :host パラメータを指定するか、default_url_options[:host] を設定してください

于 2015-03-27T22:23:32.603 に答える