我想在创建一个模型的对象(比如X)时创建另一个模型的对象(比如Y)。对象Y需要获取已创建的对象X的某些属性。所以after_save方法基本上应该有相当于New Y(Object X)的代码。我的疑问是如何将对象X作为参数传递给New()调用。
答案 0 :(得分:1)
您可以随时创建Y,然后为其分配值,然后在Y上调用save。
def after_save_func
y = y.new
y.val1 = self.val1
y.val2 - self.val2
y.save
end
但是这个方法将在每次保存后调用,这看起来更像是after_create会是最好的吗?
答案 1 :(得分:0)
我不确定我写的最终代码是否是设计标准的好解决方案。但它似乎符合我的要求:
def create_wc
Workcategory.delete_all(rfsestimationid: self.id)
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Analysis"
@workcategory.hours = self.rfstaskset.analysis_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Design"
@workcategory.hours = self.rfstaskset.design_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Test"
@workcategory.hours = self.rfstaskset.test_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Build"
@workcategory.hours = self.rfstaskset.test_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_UATSupport"
@workcategory.hours = self.rfstaskset.UATSupport_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_DepSupport"
@workcategory.hours = self.rfstaskset.DepSupport_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
end
每次删除workcategory对象,父对象在上面的代码中更新和重建。 此代码作为after_save操作执行。