所以我有两个模特:
class ModelA < ActiveRecord::Base
has_many :model_b
end
class ModelB < ActiveRecord::Base
belongs_to :model_a
end
创建ModelA时,控制器会发送一封电子邮件:
if @model_aA.save
Emailer.delay.new_model_a(@model_a.id)
如果已编辑:
if @model_a.update(model_a_params)
Emailer.delay.edit_model_a(@model_a.id)
但是,如果编辑是创建modelB对象,则不会发送编辑电子邮件。如果编辑了modelA拥有的modelB,则会发送,但如果已创建则不会发送。
我该如何改变这种行为?
答案 0 :(得分:1)
通常,您可以使用模型回调。您不需要在控制器上调用邮件程序方法,但需要在after_create / after_save / after_update挂钩中调用。
http://apidock.com/rails/ActiveRecord/Callbacks/after_save
class ModelA < ActiveRecord::Base
after_create { |instance| Emailer.delay.new_model_a(instance.id) }
after_update { |instance| Emailer.delay.edit_model_a(instance.id) }
end
class ModelB < ActiveRecord::Base
after_create { |instance| Emailer.delay.new_model_b(instance.id) }
end