Как включить: подтверждено в Devise? - PullRequest
41 голосов
/ 24 января 2011

В последней версии Devise нет: подтверждаемый включен по умолчанию. Я уже добавил соответствующие столбцы в модель User, но не могу найти примеры кода для того, чтобы включить: подтверждаемый.

Где найти хороший пример или какой код мне нужен для его включения?

Ответы [ 6 ]

72 голосов
/ 05 октября 2011

, чтобы «включить» подтверждаемое, вам просто нужно добавить его в вашу модель, например ::10000

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

Вы также можете проверить RailsCast на Devise:

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

Далее лучше поискать приложения на GitHub

19 голосов
/ 25 января 2011

Этот вопрос кажется странным ;-) Если вы написали что-то похожее:

    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 / translations / new.html.erb и проверить, как он выглядит, или изменить его. Кроме того, вы можете проверить приложение / views / devise / подтверждений / shared / _links.erb => есть строка:

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

Это условие проверяет, включено ли подтверждаемое, так что ... технически, если все прошло нормально, оно должно работать OOTB. После создания новой учетной записи - в журнале - вы должны увидеть строки, куда отправляется письмо с подтверждением с соответствующей ссылкой. Это вызывает:

     Rendered devise/mailer/confirmation_instructions.html.erb

так что у вас есть следующее место, где вы можете немного его настроить

Как настроить стратегию подтверждения? Пожалуйста, задайте точный вопрос, чего вы хотите достичь. Вы можете проверить разработку пути драгоценного камня. В /lib/devise/models/confirmable.rb могут быть полезны некоторые комментарии.

привет

16 голосов
/ 28 сентября 2011

Если вы уже установили devise в свое приложение и хотите добавить «подтверждаемый» позже вместо запуска:

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 / environment / {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  }
8 голосов
/ 11 декабря 2012

Оформить заказ разработать вики-страницу .На ваш вопрос есть полный ответ.

2 голосов
/ 06 ноября 2011

Для СУХОГО вы также можете поместить почтовую конфигурацию в 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  }
0 голосов
/ 28 марта 2015

После настройки параметра ActionMailer, описанного выше, мне пришлось сделать одно последнее добавление в файл config / environment / development.rb, чтобы исправить страницу с ошибкой, которая появлялась после регистрации нового пользователя:

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

Подробнее об этом решении: Heroku / devise - Отсутствует хост для ссылки на!Пожалуйста, укажите: параметр хоста или установите default_url_options [: хост]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...