我有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 跳过验证?
答案 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
我试图这样做。
发生的另一种解决方案是为数据库设置默认值。