Настройка модели перед сохранением с помощью устройства - PullRequest
0 голосов
/ 28 августа 2018

Я использую devise для своих пользовательских моделей в проекте RoR.

Модель «Мой пользователь» относится к Плану (базовая, хобби, профессиональная и т. Д.)

У меня есть RegistrationController для управления регистрацией нового пользователя. Как это:

class RegistrationsController < Devise::RegistrationsController

Когда создается новый пользователь (после проверки на двуличность, правила паролей и т. Д.), Я хочу добавить каждому новому пользователю приложения базовый план (из-за бизнес-правил, связанных с кредитной картой и т. Д.) *

Так просто, я хочу, чтобы для каждого пользователя создавалось что-то вроде:

#forget about this hard coding on Plan
@user.plan = Plan.find(1) 

Я не знаю, с помощью какого способа я могу добавить эту часть своего кода. Потому что это сделано на устройстве.

Кто-то может мне помочь?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете добавить план в обратный вызов before_save для модели User вместо того, чтобы обрабатывать его в пользовательском контроллере. Другой способ - добавить plan_id к параметрам устройства, как указано в https://jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html.. Это сохранит план непосредственно при сохранении пользовательской модели

0 голосов
/ 28 августа 2018

Ваша модель разработки поддерживается ActiveRecord (скорее всего), и поэтому у вас есть доступ ко всем хукам жизненного цикла ActiveRecord, таким как before_save. Откройте вашу пользовательскую модель и введите:

class User < ActiveRecord::Base
  #...
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
  #...
  before_save :assign_plan

  def assign_plan
    self.plan = Plan.find_by_name('basic').first
  end
  #...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...