class NumeritajTipo::AttributeDefinition
Attributes
default[R]
name[R]
Public Class Methods
new(name, values: nil, type: Symbol, default: nil, allow_nil: false)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 7 def initialize(name, values: nil, type: Symbol, default: nil, allow_nil: false) @name = name @enum_type = EnumType.new(type, values) @default = default @allow_nil = allow_nil end
Public Instance Methods
build(target)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 14 def build(target) define_enum! target define_helpers! target define_predicates! target define_scopes! target end
Private Instance Methods
define_enum!(target)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 28 def define_enum!(target) target.define_enum name, type, default define_validation! target end
define_helpers!(target)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 34 def define_helpers!(target) return if target.respond_to?(pluralized_name) target.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.#{pluralized_name} #{enum_values} end RUBY end
define_predicates!(target)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 44 def define_predicates!(target) enum_values.each do |value| unless target.respond_to?("#{value}?") target.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{value}? read_attribute(:#{name}) == :#{value} end RUBY end end end
define_scopes!(target)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 56 def define_scopes!(target) target.define_scopes self end
define_validation!(target)
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 60 def define_validation!(target) target.validates_inclusion_of name, in: values_for_validation, allow_nil: @allow_nil end
pluralized_name()
click to toggle source
# File lib/numeritaj_tipo/attribute_definition.rb, line 24 def pluralized_name name.to_s.pluralize end