Sha256: a6d5727549d9ce510791d8a2e27613db075ed2e4b8b95fdeac1ece25c6baed8b

Contents?: true

Size: 816 Bytes

Versions: 1

Compression:

Stored size: 816 Bytes

Contents

module DateFlag
  VERSION = '0.0.1'
  
  def date_flag(field, options =  { })
    action = (options[:action] ? options[:action] : field.to_s.sub(/_at$/, '')).to_sym
    query = (options[:query] and options[:query].to_sym or action)
    
    define_method(:"#{action}=") do |value|
      unless (read_attribute(field))
        case (value)
        when nil, false, '', '0':
          write_attribute(field, nil)
        when DateTime, Date, Time:
          write_attribute(field, value)
        else
          write_attribute(field, Time.now.utc)
        end
      end
    end

    define_method(:"#{action}?") do
      !!(read_attribute(field))
    end
  
    define_method(:"#{action}!") do
      unless (read_attribute(field))
        write_attribute(field, Time.now.utc)
        save!
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
theworkinggroup-date_flag-0.0.1 lib/date_flag.rb