diff --git a/lib/public_activity/common.rb b/lib/public_activity/common.rb index 784fc3fa..9994438b 100644 --- a/lib/public_activity/common.rb +++ b/lib/public_activity/common.rb @@ -247,10 +247,11 @@ def prepare_custom_fields(options) # be serialized into the Activity#parameters column # @api private def prepare_parameters(parameters) - params = {} - params.merge!(self.class.activity_parameters_global) - .merge!(parameters || {}) - params.each { |k, v| params[k] = PublicActivity.resolve_value(self, v) } + parameters ||= {} + + [self.class.activity_parameters_global, parameters].reduce({}) do |params, value| + params.merge!(PublicActivity.resolve_value(self, value)) + end end # Prepares relation to be saved diff --git a/test/test_common.rb b/test/test_common.rb index 288d445a..e2ccc75d 100644 --- a/test/test_common.rb +++ b/test/test_common.rb @@ -71,6 +71,15 @@ subject.activities.last.nonstandard.must_equal "true" end + it 'allows resolving parameters' do + subject.save + subject.expects(:custom_parameters).returns({ type: 'News' }) + + subject.create_activity :update, parameters: :custom_parameters + + subject.activities.last.parameters[:type].must_equal 'News' + end + it 'accepts owner as a symbol' do klass = article(:owner => :user) @article = klass.new(:user => @owner)