lib/generators/schofield/association.rb in schofield-0.2.2 vs lib/generators/schofield/association.rb in schofield-0.3.0
- old
+ new
@@ -1,94 +1,94 @@
module Schofield
-
+
module Generators
-
+
class Association
-
+
ONE_TO_ONE = '1-1'
ONE_TO_MANY = '1-*'
-
-
-
+
+
+
class << self; attr_accessor :all end
@all = []
-
+
def self.reference_parents
all.each { |a| a.reference_parent }
end
-
+
def self.report
all.each { |a| Responses.say a.report }
end
-
-
-
+
+
+
attr_reader :parent, :child, :parent_name, :child_name , :polymorphic_name
attr_writer :nest
attr_accessor :cardinality
-
+
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
-
+
def nest?
@nest
end
-
+
def reference_parent
@parent = Levels.find(@parent_name)
@parent.child_associations << self
end
-
+
def report
<<-STRING.gsub(/^ {8}/, '')
parent: #{@parent.name}
child: #{@child.name}
nest: #{@nest ? 'yes' : 'no'}
cardinality: #{@cardinality}
polymorphic_name: #{@polymorphic_name}
---
STRING
end
-
+
def one_to_one?
@cardinality == Association::ONE_TO_ONE
end
-
+
def one_to_many?
@cardinality == Association::ONE_TO_MANY
end
-
+
def polymorphic?
@polymorphic_name.present?
end
-
+
def non_polymorphic?
!polymorphic?
end
-
+
def polymorphic_one_to_one?
polymorphic? && one_to_one?
end
-
+
def polymorphic_one_to_many?
polymorphic? && one_to_many?
end
-
+
def non_polymorphic_one_to_one?
non_polymorphic? && one_to_one?
end
-
+
def non_polymorphic_one_to_many?
non_polymorphic? && one_to_many?
end
end
-
+
end
end
\ No newline at end of file