diff options
author | Emilio Tagua <miloops@gmail.com> | 2009-05-18 11:18:46 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2009-05-18 11:18:46 -0300 |
commit | a04dedd5634cbb602cf48938cee0ff11c046b4c2 (patch) | |
tree | 66c51731cc283310362db57503d4952e0a0213bb /activerecord/lib/active_record/base.rb | |
parent | 0048897a417774f7e5a0c8c9e82fc8684f94ebc1 (diff) | |
parent | 27de7f150b57a18d4ccdd274f6f8b621b58108c6 (diff) | |
download | rails-a04dedd5634cbb602cf48938cee0ff11c046b4c2.tar.gz rails-a04dedd5634cbb602cf48938cee0ff11c046b4c2.tar.bz2 rails-a04dedd5634cbb602cf48938cee0ff11c046b4c2.zip |
Merge commit 'rails/master'
Conflicts:
activerecord/lib/active_record/base.rb
activerecord/lib/active_record/migration.rb
activerecord/test/cases/helper.rb
Diffstat (limited to 'activerecord/lib/active_record/base.rb')
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index bdfb0f45aa..3b12b15a5f 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -1,6 +1,15 @@ require 'yaml' require 'set' require 'active_support/dependencies' +require 'active_support/core_ext/class/attribute_accessors' +require 'active_support/core_ext/class/delegating_attributes' +require 'active_support/core_ext/class/inheritable_attributes' +require 'active_support/core_ext/array/extract_options' +require 'active_support/core_ext/hash/deep_merge' +require 'active_support/core_ext/hash/indifferent_access' +require 'active_support/core_ext/hash/slice' +require 'active_support/core_ext/string/behavior' +require 'active_support/core/time' module ActiveRecord #:nodoc: # Generic Active Record exception class. @@ -688,9 +697,9 @@ module ActiveRecord #:nodoc: # Person.exists?(['name LIKE ?', "%#{query}%"]) # Person.exists? def exists?(id_or_conditions = {}) - connection.select_all(construct_finder_arel({ - :conditions => expand_id_conditions(id_or_conditions) - }).project(arel_table[primary_key]).take(1).to_sql).size > 0 + find_initial( + :select => "#{quoted_table_name}.#{primary_key}", + :conditions => expand_id_conditions(id_or_conditions)) ? true : false end # Creates an object (or multiple objects) and saves it to the database, if validations pass. @@ -1024,7 +1033,7 @@ module ActiveRecord #:nodoc: # To start from an all-closed default and enable attributes as needed, # have a look at +attr_accessible+. def attr_protected(*attributes) - write_inheritable_attribute(:attr_protected, Set.new(attributes.map(&:to_s)) + (protected_attributes || [])) + write_inheritable_attribute(:attr_protected, Set.new(attributes.map {|a| a.to_s}) + (protected_attributes || [])) end # Returns an array of all the attributes that have been protected from mass-assignment. @@ -1951,7 +1960,7 @@ module ActiveRecord #:nodoc: else find(:#{finder}, options.merge(finder_options)) end - #{'result || raise(RecordNotFound, "Couldn\'t find #{name} with #{attributes.to_a.collect {|pair| "#{pair.first} = #{pair.second}"}.join(\', \')}")' if bang} + #{'result || raise(RecordNotFound, "Couldn\'t find #{name} with #{attributes.to_a.collect { |pair| pair.join(\' = \') }.join(\', \')}")' if bang} end }, __FILE__, __LINE__ send(method_id, *arguments) @@ -2669,11 +2678,11 @@ module ActiveRecord #:nodoc: # Note: The new instance will share a link to the same attributes as the original class. So any change to the attributes in either # instance will affect the other. def becomes(klass) - returning klass.new do |became| - became.instance_variable_set("@attributes", @attributes) - became.instance_variable_set("@attributes_cache", @attributes_cache) - became.instance_variable_set("@new_record", new_record?) - end + became = klass.new + became.instance_variable_set("@attributes", @attributes) + became.instance_variable_set("@attributes_cache", @attributes_cache) + became.instance_variable_set("@new_record", new_record?) + became end # Updates a single attribute and saves the record without going through the normal validation procedure. |