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