Sha256: 6e9c13f8a4de276336d576b24a61981ed9bd70a28ad365951cd57174af54e46a

Contents?: true

Size: 1.42 KB

Versions: 13

Compression:

Stored size: 1.42 KB

Contents

module ActiveRecord #:nodoc:
  module ConnectionAdapters #:nodoc:
    module OracleEnhancedDirty #:nodoc:

      module InstanceMethods
        private
        
        def field_changed?(attr, old, value)
          if column = column_for_attribute(attr)
            # RSI: added also :decimal type
            if (column.type == :integer || column.type == :decimal) && column.null && (old.nil? || old == 0) && value.blank?
              # For nullable integer columns, NULL gets stored in database for blank (i.e. '') values.
              # Hence we don't record it as a change if the value changes from nil to ''.
              # If an old value of 0 is set to '' we want this to get changed to nil as otherwise it'll
              # be typecast back to 0 (''.to_i => 0)
              value = nil
            # RSI: Oracle stores empty string '' or empty text (CLOB) as NULL
            # therefore need to convert empty string value to nil if old value is nil
            elsif (column.type == :string || column.type == :text) && column.null && old.nil?
              value = nil if value == ''
            else
              value = column.type_cast(value)
            end
          end

          old != value
        end
        
      end

    end
  end
end

if ActiveRecord::Base.instance_methods.include?('changed?')
  ActiveRecord::Base.class_eval do
    include ActiveRecord::ConnectionAdapters::OracleEnhancedDirty::InstanceMethods
  end
end

Version data entries

13 entries across 13 versions & 5 rubygems

Version Path
rsim-activerecord-oracle_enhanced-adapter-1.1.9.92 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
rsim-activerecord-oracle_enhanced-adapter-1.1.9.93 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
rsim-activerecord-oracle_enhanced-adapter-1.2.0.1 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
rsim-activerecord-oracle_enhanced-adapter-1.2.0.2 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
rsim-activerecord-oracle_enhanced-adapter-1.2.0 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
rsim-activerecord-oracle_enhanced-adapter-1.2.1 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
rwc9u-activerecord-oracle_enhanced-adapter-1.2.0 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
saberma-activerecord-oracle_enhanced-adapter-nvarchar2-1.2.1.1 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
saberma-activerecord-oracle_enhanced-adapter-nvarchar2-1.2.1.2 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
saberma-activerecord-oracle_enhanced-adapter-nvarchar2-1.2.1 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
saberma-saberma-activerecord-oracle_enhanced-adapter-nvarchar2-1.2.1 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
activerecord-oracle_enhanced-adapter-1.2.1 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
activerecord-oracle_enhanced-adapter-1.2.0 lib/active_record/connection_adapters/oracle_enhanced_dirty.rb