From 25e316c45f0a66a796ca1a3a8e42ccbc37a8d6a8 Mon Sep 17 00:00:00 2001 From: Bryan Larsen Date: Thu, 9 Aug 2012 15:07:40 -0400 Subject: [PATCH] update ActiveRecord::Associations#create for Rails 3.2 --- .../extensions/active_record/permissions.rb | 39 +++++++------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/hobo/lib/hobo/extensions/active_record/permissions.rb b/hobo/lib/hobo/extensions/active_record/permissions.rb index 23bc40ac7..b8f7acb44 100644 --- a/hobo/lib/hobo/extensions/active_record/permissions.rb +++ b/hobo/lib/hobo/extensions/active_record/permissions.rb @@ -68,34 +68,25 @@ def acting_user end - def create!(attrs = nil) + def create_record_with_user_create(attrs, options, raise = false, &block) klass = @reflection.klass user = acting_user if klass < Hobo::Model - klass.transaction do - object = if attrs - klass.send(:with_scope, :create => attrs) { user ? klass.user_create!(user) : klass.create! } - else - user ? klass.user_create!(user) : klass.create! - end - self << object - object - end - end - - - def create(attrs = nil) - klass = @reflection.klass - user = acting_user if klass < Hobo::Model - klass.transaction do - object = if attrs - klass.send(:with_scope, :create => attrs) { user ? klass.user_create(user) : klass.create } - else - user ? klass.user_create(user) : klass.create - end - self << object - object + if user + if attributes.is_a?(Array) + attributes.collect { |attr| create_record(attr, options, raise, &block) } + else + transaction do + add_to_target(klass.user_create(attributes)) do |record| + yield(record) if block_given? + insert_record(record, true, raise) + end + end + end + else + create_record_without_user_create(attrs, options, raise, &block) end end + alias_method_chain :create_record, :user_create def insert_record_with_owner_attributes(record, force = true, raise = false)