Module: Formed::Core::ClassMethods

Defined in:
lib/formed/core.rb

Instance Method Summary collapse

Instance Method Details

#===(object) ⇒ Object

Override the default class equality method to provide support for decorated models.



68
69
70
# File 'lib/formed/core.rb', line 68

def ===(object) # :nodoc:
  object.is_a?(self)
end

#filter_attributesObject

Returns columns which shouldn’t be exposed while calling #inspect.



32
33
34
35
36
37
38
# File 'lib/formed/core.rb', line 32

def filter_attributes
  if defined?(@filter_attributes)
    @filter_attributes
  else
    superclass.filter_attributes
  end
end

#filter_attributes=(filter_attributes) ⇒ Object

Specifies columns which shouldn’t be exposed while calling #inspect.



41
42
43
44
# File 'lib/formed/core.rb', line 41

def filter_attributes=(filter_attributes)
  @inspection_filter = nil
  @filter_attributes = filter_attributes
end

#generated_association_methodsObject

:nodoc:



21
22
23
24
25
26
27
28
29
# File 'lib/formed/core.rb', line 21

def generated_association_methods # :nodoc:
  @generated_association_methods ||= begin
    mod = const_set(:GeneratedAssociationMethods, Module.new)
    private_constant :GeneratedAssociationMethods
    include mod

    mod
  end
end

#inherited(child_class) ⇒ Object

:nodoc:



8
9
10
11
12
13
14
15
# File 'lib/formed/core.rb', line 8

def inherited(child_class) # :nodoc:
  # initialize cache at class definition for thread safety
  unless child_class.base_class?
    klass = self
    klass = klass.superclass until klass.base_class?
  end
  super
end

#initialize_generated_modulesObject

:nodoc:



17
18
19
# File 'lib/formed/core.rb', line 17

def initialize_generated_modules # :nodoc:
  generated_association_methods
end

#inspectObject

Returns a string like ‘Post(id:integer, title:string, body:text)’



58
59
60
61
62
63
64
65
# File 'lib/formed/core.rb', line 58

def inspect # :nodoc:
  if self == Formed::Base
    super
  else
    attr_list = attribute_types.map { |name, type| "#{name}: #{type.type}" } * ", "
    "#{super}(#{attr_list})"
  end
end

#inspection_filterObject

:nodoc:



46
47
48
49
50
51
52
53
54
55
# File 'lib/formed/core.rb', line 46

def inspection_filter # :nodoc:
  if defined?(@filter_attributes)
    @inspection_filter ||= begin
      mask = InspectionMask.new(ActiveSupport::ParameterFilter::FILTERED)
      ActiveSupport::ParameterFilter.new(@filter_attributes, mask: mask)
    end
  else
    superclass.inspection_filter
  end
end