我有两种模式:
class User
has_many :submissions
accepts_nested_attributes_for :submissions, :allow_destroy => true
end
class Submission
belongs_to :user
after_create :send_confirmation
def send_confirmation
UserMailer.confirm_submission(self)
end
end
在Controller中,提交模型由用户模型
创建def create
@user = User.where(:email => user_params[:email]).first_or_create
@user.update_attributes(user_params)
end
没有为Submission模型触发after_create回调。
如何让这个回调起作用?
答案 0 :(得分:3)
您已在after_create
课程中定义了Submission
回调。我猜您期望在表单中设置提交属性以“创建”新提交。
但请查看控制器中的代码:
@user = User.where(:email => user_params[:email]).first_or_create
@user.update_attributes(user_params)
这是你在做什么:
User
user_params
假设user_params
包含您的提交属性,您不是“创建”而是“更新”实例。
您需要定义after_update
或after_save
回调:
class Submission
belongs_to :user
after_save :send_confirmation
def send_confirmation
UserMailer.confirm_submission(self)
end
end
答案 1 :(得分:0)
请尝试使用after_save
代替after_create
class Submission
belongs_to :user
after_save :send_confirmation
def send_confirmation
UserMailer.confirm_submission(self)
end
end
感谢