Обратный вызов RoR after_create - PullRequest
0 голосов
/ 30 декабря 2018

У меня 2 модели. Пользователь и профиль

class User < ApplicationRecord 
  has_one :profile
  after_create :create_profile
end

class Profile < ApplicationRecord
  validates :first_name, :last_name, presence: true
  belongs_to :user
end

Моя проблема в том, что

after_create: create_profile

не работает, потому что не проходит проверку.Есть ли в rail что-то after_create: create_profile! или after_create (validate: false): create_profile , чтобы пропустить проверку?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018
  after_create :create_profile!

  private
  def create_profile!
    profile = Profile.new(user_id: self.id)
    profile.save(validate: false)
  end

Я пытался сделать это.Другое решение состоит в том, чтобы установить значения по умолчанию для базы данных.

0 голосов
/ 30 декабря 2018

After_create будет работать в контроллере, а не в модели.создать метод в контроллере, который вызывается при действии after_create.в этом методе вызовите метод Model для создания профиля.Не стоит пропускать проверки, но если вы хотите, вы все равно можете это сделать.В модели профиля вы можете добавить флаг, чтобы пропустить проверку при вызове из этого метода.

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