我有两个模型Variant
和OptionValue
。当variant.name
添加到变体模型时,option_value
会更新,但是当更新option_value时,variant.name不会更新,我为此创建了一个清扫程序,并为option_value添加了一个观察者。当option_value属性更新时,控件转到sweeper after_update
方法,但参数option_value
的值不是更新的值,而是设置的默认值。我检查了清扫器和规范中两个值的id
,它们是不同的。
op_spec.rb
it 'updates names when option_value is updated' do
option_value_1 = create(:option_value, value: 'Test')
option_value_2 = create(:option_value, value: 'Test1')
variant_1 = Variant.new()
variant_1.option_values = [ option_value_1, option_value_2 ]
variant_1.save
variant_2 = Variant.new()
variant_2.option_values = [ option_value_1 ]
variant_2.save
option_value_1.update_attribute(:value, 'New test')
end
配置/ application.rb中
config.active_record.observers
option_value_sweeper.rb
class OptionValueSweeper < ActionController::Caching::Sweeper
include SweepersHelpers
observe :option_value
def after_update(option_value)
puts option_value.value
end
end