Ruby on rails Rails模型回调不工作(创建其他类的新实例)

Ruby on rails Rails模型回调不工作(创建其他类的新实例),ruby-on-rails,ruby,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby On Rails 2,在我的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 => s

在我的
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

此外,表中的所有列都允许
NULL
,但
id
列除外,该列是
AUTO\u INCREMENT
,因此数据库端没有任何内容会阻止保存记录,同样,在模型中没有验证,并且
电路
被正确保存。

您的回调可能正确触发。问题是您正在设置一个新的
服务
,但实际上并没有保存它。当控制器重定向时,
电路
对象重新加载,并丢失
服务
对象

您可能希望实际创建对象:

service = Service.create :service_type => 'Circuit', :child_id => self.id, :organisation_id => self.organisation_id

您的回调可能正常启动。问题是您正在设置一个新的
服务
,但实际上并没有保存它。当控制器重定向时,
电路
对象重新加载,并丢失
服务
对象

您可能希望实际创建对象:

service = Service.create :service_type => 'Circuit', :child_id => self.id, :organisation_id => self.organisation_id

尝试<代码>服务。创建< /COD>而不是<代码>服务。新的< /代码>……您应该考虑不要在<代码>更新< /COD>方法中创建新资源,但是在<代码>创建< /代码>方法。谢谢J03W,是的,完全错过了那个,彼埃尔,是的,我也喜欢这样。这是一个遗留代码库,CRUD的所有更新/创建部分都是通过一个更新动作完成的。如果你想确定你的回调只在创建或更新上启动,你也可以参考信息。尝试<代码>服务。创建< /代码>而不是<代码>服务。新的< /代码>…你应该考虑不创建新的资源。在你的
更新
方法中,但在
创建
方法中。谢谢j03w,是的,完全错过了那一个,Pierre,是的,我也喜欢那样,这是一个遗留代码库,CRUD的所有更新/创建部分都是通过更新操作完成的。如果要确保回调仅在创建或更新时触发,您还可以参考中的信息。。。。。啊,真不敢相信我没看到。谢谢你帮助我。。。。。啊,真不敢相信我没看到。谢谢你帮我。