Module: KeepDefaults

Defined in:
lib/keep_defaults.rb,
lib/keep_defaults/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/keep_defaults.rb', line 4

def self.included(klass)
  klass.instance_eval do
    column_defaults.each do |name, default|
      next if default.nil? || columns_hash[name].null

      # Use Module.new so classes can get this by calling super
      module_eval %{
        include Module.new {
          def #{name}=(value)
            return if value.nil?
            super value
          end
        }
      }, __FILE__, __LINE__ + 1
    end
  end
end

Instance Method Details

#write_attribute(name, value) ⇒ Object



22
23
24
25
26
27
# File 'lib/keep_defaults.rb', line 22

def write_attribute(name, value)
  name  = name.to_s if name.is_a?(Symbol)
  name  = self.class.attribute_alias(name) if self.class.attribute_alias?(name)
  value = self.class.column_defaults[name] if value.nil? && !self.class.columns_hash[name].null
  super
end