diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2011-05-21 16:28:11 +0100 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2011-05-21 16:33:54 +0100 |
commit | 09daaaa1e0481207c06416f909171d4f66bc0f6d (patch) | |
tree | f5693ddc5f072afb2bfef589af430858a9480b9c /activerecord/lib | |
parent | 1a959ad72fc92a82e05e8c271858a64ed14b926e (diff) | |
download | rails-09daaaa1e0481207c06416f909171d4f66bc0f6d.tar.gz rails-09daaaa1e0481207c06416f909171d4f66bc0f6d.tar.bz2 rails-09daaaa1e0481207c06416f909171d4f66bc0f6d.zip |
Add support for passing mass assignment roles to dynamic finders. Closes #1170.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 475e4338ca..4659563f33 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -264,6 +264,7 @@ module ActiveRecord end def find_or_instantiator_by_attributes(match, attributes, *args) + options = args.size > 1 && args.last(2).all?{ |a| a.is_a?(Hash) } ? args.extract_options! : {} protected_attributes_for_create, unprotected_attributes_for_create = {}, {} args.each_with_index do |arg, i| if arg.is_a?(Hash) @@ -278,8 +279,7 @@ module ActiveRecord record = where(conditions).first unless record - record = @klass.new do |r| - r.assign_attributes(protected_attributes_for_create) + record = @klass.new(protected_attributes_for_create, options) do |r| r.assign_attributes(unprotected_attributes_for_create, :without_protection => true) end yield(record) if block_given? |