module Backline::Model::Attributes::ClassMethods

Public Instance Methods

attribute(name, options = {}) click to toggle source
# File lib/backline/model/attributes.rb, line 14
def attribute(name, options = {})
  Attribute.new(name, options.merge(model_class: self)).tap do |attribute|
    attributes[attribute.name] = attribute
    generate_accessors(attribute)
  end
end
attribute_names() click to toggle source
# File lib/backline/model/attributes.rb, line 21
def attribute_names
  attributes.keys
end

Private Instance Methods

generate_accessors(attribute) click to toggle source
# File lib/backline/model/attributes.rb, line 27
def generate_accessors(attribute)
  generate_getter(attribute)
  generate_setter(attribute)
end
generate_getter(attribute) click to toggle source
# File lib/backline/model/attributes.rb, line 32
def generate_getter(attribute)
  generated_methods.module_eval do
    define_method(attribute.getter_method) do
      read_attribute(attribute.name)
    end
  end
end
generate_setter(attribute) click to toggle source
# File lib/backline/model/attributes.rb, line 40
def generate_setter(attribute)
  generated_methods.module_eval do
    define_method(attribute.setter_method) do |value|
      write_attribute(attribute.name, value)
    end
  end
end
generated_methods() click to toggle source
# File lib/backline/model/attributes.rb, line 48
def generated_methods
  @generated_methods ||= Module.new.tap { |mod| include(mod) }
end