缺少ActiveSupport :: Callbacks方法。无法找到方法选项

时间:2015-04-09 14:55:11

标签: ruby-on-rails ruby callback activesupport

我想知道如何从rails 3.14

移动到rails 4.2

现在我尝试在options

中找到方法ActiveSupport::Callbacks::Callback

此方法存在于ActiveSupport :: Callbacks :: Callback 3.0.9版中,但在最新版本4.2中不存在

在rvm目录中进行activesupport / *库调查之后,我找到了返回normalize_callback_params的方法type, filters, options,但这无助于我在我的应用程序中传递测试。

但是,我在ActiveSupport :: Callbacks :: Callback:if-property中找到了有趣的属性。它返回此回调的bool表达式,因此,我的测试可以用它重写。

    it 'should apply filter options' do
        klass.unjsonify_param :param_name, { only: [:create, :update] }
        filters = klass._process_action_callbacks
        puts "this is filters methods #{filters.class.instance_methods.sort - Array.instance_methods}"
        filter = filters.find { |f| f.filter == :unjsonify_param_name }
        puts "this is filter methods: #{filter.class.instance_methods.sort - Object.instance_methods}"
        puts "this is filter: #{filter.instance_values}"
        # fail here, method `options` doesn't exists for ActiveSupport::Callbacks::Callback::<instance_hash>       
        expect(filter.options[:only]).to be == [:create, :update]
      end

是否有人可以帮助我了解新的activesupport回调架构,以便从旧的rails版本迁移到新版本。

0 个答案:

没有答案