module ActsAsBytefield::ClassMethods
Public Instance Methods
acts_as_bytefield(column, options = {})
click to toggle source
# File lib/acts_as_bytefield.rb, line 10 def acts_as_bytefield(column, options = {}) fail( ArgumentError, "Hash expected, got #{options.class.name}" ) unless options.is_a?(Hash) || options.empty? declare_class_accessors column = column.to_sym bytefields[column] = create_field_hash(options[:keys]) define_bytefield_methods(column) include ActsAsBytefield::InstanceMethods end
Private Instance Methods
create_field_hash(fields)
click to toggle source
# File lib/acts_as_bytefield.rb, line 32 def create_field_hash(fields) attrs = {} fields.inject(0) do |index, key| attrs[key] = index index += 1 end attrs end
declare_class_accessors()
click to toggle source
# File lib/acts_as_bytefield.rb, line 26 def declare_class_accessors return nil if respond_to?(:bytefields) class_eval { cattr_accessor :bytefields } self.bytefields = {} end
define_bytefield_methods(column)
click to toggle source
# File lib/acts_as_bytefield.rb, line 41 def define_bytefield_methods(column) bytefields[column].keys.each do |key| define_method(key) { bytefield_value(column, key) } define_method("#{key}=") { |value| set_bytefield_value(column, key, value) } end end