Sha256: 6a3766cb236a7ce8e21ef9cca4f606127904a898b7cd606d51d75cfd1cbcd8e4
Contents?: true
Size: 1.06 KB
Versions: 1
Compression:
Stored size: 1.06 KB
Contents
require 'bitmask_attributes/definition' require 'bitmask_attributes/value_proxy' module BitmaskAttributes extend ActiveSupport::Concern module ClassMethods def bitmask(attribute, options={}, &extension) unless options[:as] && options[:as].kind_of?(Array) raise ArgumentError, "Must provide an Array :as option" end if default = options[:default] after_initialize do send("#{attribute}=", default) unless send("#{attribute}?") end end bitmask_definitions[attribute] = Definition.new(attribute, options[:as].to_a,options[:null].nil? || options[:null], options[:zero_value], &extension) bitmask_definitions[attribute].install_on(self) end def bitmask_definitions base_class.base_class_bitmask_definitions end def bitmasks base_class.base_class_bitmasks end protected def base_class_bitmask_definitions @bitmask_definitions ||= {} end def base_class_bitmasks @bitmasks ||= {} end end end ActiveRecord::Base.send :include, BitmaskAttributes
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bitmask_attributes-0.4.0 | lib/bitmask_attributes.rb |