我在更新嵌套属性后尝试对模型进行回调。在回调期间,我无法访问新创建的嵌套属性id。下面是一些例子:
型号:
class OptionType < ActiveRecord::Base
has_many :option_values
accepts_nested_attributes_for :option_values
after_update :print_new_option_value
def print_new_option_value
@option_value = []
option_values.each do |option_value|
if option_value.new_record?
@option_value << option_value
end
end
@option_value.each do |ov|
print "This is the new option_value name = #{ov.name}"
print "This the new option_value id = #{ov.id}"
end
end
end
class OptionValue < ActiveRecord::Base
belongs_to :option_type
end
在使用新选项值(名称:新选项值)更新选项类型后,将显示以下rails日志:
我的问题,如何在调用选项类型回调之前更新嵌套属性(选项值)?原因是,我需要访问某些代码的嵌套属性id。
非常感谢和赞赏。
答案 0 :(得分:0)
您也可以从另一方面解决此问题 - 将after_create
回调添加到OptionValue
模型,该模型将通知OptionType
:
class OptionType < ActiveRecord::Base
has_many :option_values
accepts_nested_attributes_for :option_values
def print_new_option_value(new_option)
print "This is the new option_value name = #{ov.name}"
print "This the new option_value id = #{ov.id}"
end
end
class OptionValue < ActiveRecord::Base
belongs_to :option_type
after_create :notify_option_type
def notify_option_type
option_type.print_new_option_value(self)
end
end