我想知道如何从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版本迁移到新版本。