在我的circuit.rb
课程中,我有以下内容
class Circuit < ActiveRecord::Base
after_create :create_service
def create_service
# create service record
service = Service.new :service_type => 'Circuit', :child_id => self.id, :organisation_id => self.organisation_id
end
我只想在创建circuit
时触发回调,我已经尝试了before_validation
,日志中没有错误,事实上,没有提到{{1}表被触摸,我重新启动了服务器以及预防措施,但不确定为什么services
实例没有被保存。
为了完整性:
service
此外,表中的所有列都允许class CircuitController < ApplicationController
def update
...
if request.post?
if @circuit
# update
else
# attempt create
@circuit = Circuit.new params[:circuit]
if @circuit.save
redirect_to :action => 'update', :id => @circuit.id
end
end
end
end
end
,但NULL
列除外id
,因此数据库端没有任何内容可以阻止记录被保存,类似地在模型中没有验证,AUTO_INCREMENT
已正确保存。
答案 0 :(得分:3)
您的回调可能正常启动。问题是您正在设置新的Service
,但实际上并没有保存它。当控制器重定向时,Circuit
对象将重新加载并丢失Service
对象。
您可能想要实际创建对象:
service = Service.create :service_type => 'Circuit', :child_id => self.id, :organisation_id => self.organisation_id