Rails观察者仍然获取默认值而不是更新值

时间:2014-11-21 09:52:46

标签: ruby-on-rails ruby ruby-on-rails-4

我有两个模型VariantOptionValue。当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

0 个答案:

没有答案