class Katapult::Model

Constants

MissingLabelAttributeError
UnknownAttributeError

Attributes

_belongs_tos[RW]
attrs[RW]
belongs_tos[RW]
has_manys[RW]

Public Class Methods

new(*args) click to toggle source
Calls superclass method Katapult::Element::new
# File lib/katapult/elements/model.rb, line 15
def initialize(*args)
  self.attrs = []
  self._belongs_tos = []
  self.belongs_tos = []
  self.has_manys = []

  super
end

Public Instance Methods

add_foreign_key_attrs(belongs_tos) click to toggle source
# File lib/katapult/elements/model.rb, line 62
def add_foreign_key_attrs(belongs_tos)
  belongs_tos.each do |other_model|
    attr "#{ other_model.name :variable }_id", type: :foreign_key,
      assignable_values: "#{ other_model.name(:class) }.all.to_a",
      allow_blank: true,
      associated_model: other_model
  end
end
attr(attr_name, options = {}) click to toggle source

DSL

# File lib/katapult/elements/model.rb, line 25
def attr(attr_name, options = {})
  options[:model] = self
  attrs << Attribute.new(attr_name, options)
end
belongs_to(model_name) click to toggle source

DSL

# File lib/katapult/elements/model.rb, line 31
def belongs_to(model_name)
  application_model.association name, belongs_to: model_name
end
db_fields() click to toggle source
# File lib/katapult/elements/model.rb, line 46
def db_fields
  attrs.reject(&:skip_db)
end
editable_attrs() click to toggle source
# File lib/katapult/elements/model.rb, line 54
def editable_attrs
  attrs.select &:editable?
end
label_attr() click to toggle source
# File lib/katapult/elements/model.rb, line 36
def label_attr
  renderable_attrs.first.presence or raise MissingLabelAttributeError
end
label_attr?() click to toggle source
# File lib/katapult/elements/model.rb, line 40
def label_attr?
  label_attr.present?
rescue MissingLabelAttributeError
  false
end
render(options = {}) click to toggle source
# File lib/katapult/elements/model.rb, line 71
def render(options = {})
  Generators::ModelGenerator.new(self, options).invoke_all
end
renderable_attrs() click to toggle source
# File lib/katapult/elements/model.rb, line 50
def renderable_attrs
  attrs.select &:renderable?
end
required_attrs() click to toggle source
# File lib/katapult/elements/model.rb, line 58
def required_attrs
  attrs.select &:required?
end