#ruby-on-rails #ruby #ruby-on-rails-3 #web-applications
#ruby-on-rails #ruby #ruby-on-rails-3 #веб-приложения
Вопрос:
Мы разрабатываем механизм объявления, который работает следующим образом: — Пользователи являются вложенными атрибутами в объявлении. Электронные письма пользователя вводятся в новую форму объявления как вложенные атрибуты. — Хотелось бы работать таким образом — Когда объявление сохранено, необходимо выполнить поиск по электронной почте пользователя с электронными письмами текущих пользователей, если найдено, затем поместить это объявление в профиль этого пользователя, и пользователь будет уведомлен по электронной почте. Если НЕТ, то создается новая учетная запись пользователя и пользователю отправляется электронное письмо с просьбой подтвердить свою учетную запись. При создании нового объявления rails сохраняет все атрибуты, связанные с вложенными атрибутами (это здорово, за исключением случаев, когда электронная почта пользователя уже существует). Поскольку для создания учетной записи пользователя используется только электронная почта пользователя, как мы можем позже внедрить пароль (или автоматически создать пароль, чтобы разрешить пользователю изменять его позже)? Мы используем devise для аутентификации. Есть ли способ использовать devise для выполнения этой функции? Как можно решить эту проблему? Мы высоко ценим вашу помощь.
class Announcement < ActiveRecord::Base
attr_accessible :content, :users_attributes
has_many :users, :through => :awards
has_many :awards, :dependent => :destroy
accepts_nested_attributes_for :users, :reject_if => lambda { |a| a[:email].blank? }, :allow_destroy => true
end
class User < ActiveRecord::Base
attr_accessible :email, :first_name, :last_name, :middle_name
has_many :awards, :dependent => :destroy
has_many :announcements, :through => :awards, :dependent => :destroy
email_regex = /A[w -.] @[a-zd-.] .[a-z] z/i
validates :email, :presence => true, :format => { :with => email_regex }, :uniqueness => { :case_sensitive => false }
end
Электронная почта
Ответ №1:
Вы можете внедрить дополнительный логический атрибут в свою пользовательскую модель, чтобы указать, что учетная запись была запрошена, а затем не использовать подтверждаемый модуль devise (поскольку пользователь фактически подтвердил свой адрес электронной почты, перейдя по ссылке). Когда появится пользователь, учетная запись которого не была запрошена, заполните данные аутентификации в этот момент. Предположительно, у вас должен быть атрибут в обратной ссылке по электронной почте, который позволяет вам извлекать соответствующую запись для заполнения.
Комментарии:
1. Марк, спасибо за твою помощь. Для разработки по умолчанию требуется: пароль — даже я пробовал их w / o password wiki — не могу заставить его работать. Я новичок, не могли бы вы объяснить подробнее? Спасибо!