RoR回调after_create

时间:2018-12-30 13:46:12

标签: ruby-on-rails validation callback

我有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(验证:否):create_profile 跳过验证?

2 个答案:

答案 0 :(得分:0)

After_create将在不在模型中的控制器中工作。 在控制器中创建一个方法,该方法在after_create操作中被调用。 在该方法中,调用Model方法来创建配置文件。 跳过验证不是很好,但是如果愿意,您仍然可以这样做。 在配置文件模型中,您可以添加一个标志以跳过通过此方法进行的调用验证。

答案 1 :(得分:0)

  after_create :create_profile!

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

我试图这样做。
发生的另一种解决方案是为数据库设置默认值。