module Mince::Model::Fields::ClassMethods

Public Instance Methods

add_assignable_field(field_name) click to toggle source

Adds an assignable field, values for these fields can be set using the field writer or from the ‘attributes=` method.

# File lib/mince/model/fields.rb, line 41
def add_assignable_field(field_name)
  fields << field_name
  assignable_fields << field_name
  attr_accessor field_name
end
add_readonly_field(field_name) click to toggle source

Adds a read only field, values for these fields can only be set in the class itself or from the hash sent in to the initializer

# File lib/mince/model/fields.rb, line 33
def add_readonly_field(field_name)
  fields << field_name
  readonly_fields << field_name
  attr_reader field_name
end
assignable_fields() click to toggle source

Returns the list of assignable fields

# File lib/mince/model/fields.rb, line 56
def assignable_fields
  @assignable_fields ||= []
end
field(field_name, options={}) click to toggle source

Adds a field to the object. Takes options to indicate assignability. If ‘assignable` is set, the field will be assignable via

model.field = 'foo'
model.attributes = { field: 'foo' }
# File lib/mince/model/fields.rb, line 23
def field(field_name, options={})
  if options[:assignable]
    add_assignable_field(field_name)
  else
    add_readonly_field(field_name)
  end
end
fields(*field_names) click to toggle source

Adds multiple readonly fields to the fields array, and returns the current list of fields. If no fields are given, it just returns the current list of fields

# File lib/mince/model/fields.rb, line 49
def fields(*field_names)
  @fields ||= []
  field_names.each {|field_name| field(field_name) }
  @fields
end
readonly_fields() click to toggle source

Returns the list of readonly fields

# File lib/mince/model/fields.rb, line 61
def readonly_fields
  @readonly_fields ||= []
end