Class: Schofield::Generators::Association

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/schofield/association.rb

Constant Summary collapse

ONE_TO_ONE =
'1-1'
ONE_TO_MANY =
'1-*'

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(child, parent_name, one_to_one, polymorphic_name = nil) ⇒ Association

Returns a new instance of Association.



29
30
31
32
33
34
35
36
37
# File 'lib/generators/schofield/association.rb', line 29

def initialize child, parent_name, one_to_one, polymorphic_name=nil
  @child            = child
  @child_name       = child.name
  @parent_name      = parent_name
  @polymorphic_name = polymorphic_name
  @cardinality      = one_to_one ? ONE_TO_ONE : ONE_TO_MANY
  @nest             = polymorphic_name.present? && !one_to_one
  self.class.all << self
end

Class Attribute Details

.allObject

Returns the value of attribute all.



12
13
14
# File 'lib/generators/schofield/association.rb', line 12

def all
  @all
end

Instance Attribute Details

#cardinalityObject

Returns the value of attribute cardinality.



27
28
29
# File 'lib/generators/schofield/association.rb', line 27

def cardinality
  @cardinality
end

#childObject (readonly)

Returns the value of attribute child.



25
26
27
# File 'lib/generators/schofield/association.rb', line 25

def child
  @child
end

#child_nameObject (readonly)

Returns the value of attribute child_name.



25
26
27
# File 'lib/generators/schofield/association.rb', line 25

def child_name
  @child_name
end

#nest=(value) ⇒ Object (writeonly)

Sets the attribute nest

Parameters:

  • value

    the value to set the attribute nest to.



26
27
28
# File 'lib/generators/schofield/association.rb', line 26

def nest=(value)
  @nest = value
end

#parentObject (readonly)

Returns the value of attribute parent.



25
26
27
# File 'lib/generators/schofield/association.rb', line 25

def parent
  @parent
end

#parent_nameObject (readonly)

Returns the value of attribute parent_name.



25
26
27
# File 'lib/generators/schofield/association.rb', line 25

def parent_name
  @parent_name
end

#polymorphic_nameObject (readonly)

Returns the value of attribute polymorphic_name.



25
26
27
# File 'lib/generators/schofield/association.rb', line 25

def polymorphic_name
  @polymorphic_name
end

Class Method Details

.reference_parentsObject



15
16
17
# File 'lib/generators/schofield/association.rb', line 15

def self.reference_parents
  all.each { |a| a.reference_parent }
end

.reportObject



19
20
21
# File 'lib/generators/schofield/association.rb', line 19

def self.report
  all.each { |a| Responses.say a.report }
end

Instance Method Details

#nest?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/generators/schofield/association.rb', line 39

def nest?
  @nest
end

#non_polymorphic?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/generators/schofield/association.rb', line 71

def non_polymorphic?
  !polymorphic?
end

#non_polymorphic_one_to_many?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/generators/schofield/association.rb', line 87

def non_polymorphic_one_to_many?
  non_polymorphic? && one_to_many?
end

#non_polymorphic_one_to_one?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/generators/schofield/association.rb', line 83

def non_polymorphic_one_to_one?
  non_polymorphic? && one_to_one?
end

#one_to_many?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/generators/schofield/association.rb', line 63

def one_to_many?
  @cardinality == Association::ONE_TO_MANY
end

#one_to_one?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/generators/schofield/association.rb', line 59

def one_to_one?
  @cardinality == Association::ONE_TO_ONE
end

#polymorphic?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/generators/schofield/association.rb', line 67

def polymorphic?
  @polymorphic_name.present?
end

#polymorphic_one_to_many?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/generators/schofield/association.rb', line 79

def polymorphic_one_to_many?
  polymorphic? && one_to_many?
end

#polymorphic_one_to_one?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/generators/schofield/association.rb', line 75

def polymorphic_one_to_one?
  polymorphic? && one_to_one?
end

#reference_parentObject



43
44
45
46
# File 'lib/generators/schofield/association.rb', line 43

def reference_parent
  @parent = Levels.find(@parent_name)
  @parent.child_associations << self
end

#reportObject



48
49
50
51
52
53
54
55
56
57
# File 'lib/generators/schofield/association.rb', line 48

def report
  <<-STRING.gsub(/^ {8}/,  '')
  parent:           #{@parent.name}
  child:            #{@child.name}
  nest:             #{@nest ? 'yes' : 'no'}
  cardinality:      #{@cardinality}
  polymorphic_name: #{@polymorphic_name}
  ---
  STRING
end