В новейшей версии Devise нет: подтверждение по умолчанию включено. Я уже добавил соответствующие столбцы в модель User, но не могу найти примеры кода, как включить: confirmable.
Где я могу найти хороший пример или какой код мне нужно включить?
В новейшей версии Devise нет: подтверждение по умолчанию включено. Я уже добавил соответствующие столбцы в модель User, но не могу найти примеры кода, как включить: confirmable.
Где я могу найти хороший пример или какой код мне нужно включить?
для "enable" 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
Вы также можете проверить RailsCast на Devise:
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
Вы можете перейти в приложение /views/devise/confirmations/new.html.erb и посмотреть, как он выглядит или изменить его. Кроме того, вы можете проверить приложение /views/devise/confirmations/shared/ _links.erb = > есть строка:
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
Это условие проверяет, включено ли подтверждение, поэтому... технически, если все прошло нормально, он должен работать OOTB. После создания новой учетной записи - в журнале - вы должны увидеть строки, на которые отправляется письмо с соответствующей ссылкой. Он вызывает:
Rendered devise/mailer/confirmation_instructions.html.erb
поэтому у вас есть следующее место, где вы можете немного настроить его
Как настроить стратегию подтверждения? Пожалуйста, задайте точный вопрос, чего вы хотите достичь. Вы можете проверить путь создания драгоценных камней. В /lib/devise/models/confirmable.rb некоторые комментарии могут быть полезны.
рассматривает
Если вы уже установили приложение в свое приложение и хотите добавить "подтверждать" позже, вместо запуска:
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 }
Оформить покупку создать страницу вики. На ваш вопрос есть полный ответ.
Для DRY вы также можете установить конфигурацию mailer в 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/environment/development.rb, чтобы исправить страницу с ошибкой, которая появится после регистрации нового пользователя:
config.action_mailer.default_url_options = {: host = > 'localhost'}
Подробнее об этом решении: Heroku/devise - Отсутствует хост для ссылки! Укажите параметр хоста или установите default_url_options [: хост]