module ActiveFacts::Generators::OOTraits::Role
Public Instance Methods
oo_role_definition()
click to toggle source
# File lib/activefacts/generators/traits/oo.rb, line 23 def oo_role_definition return if fact_type.entity_type if fact_type.all_role.size == 1 return " maybe :#{preferred_role_name}\n" elsif fact_type.all_role.size != 2 # Shouldn't come here, except perhaps for an invalid model return # ternaries and higher are always objectified end # REVISIT: TypeInheritance if fact_type.is_a?(ActiveFacts::Metamodel::TypeInheritance) # trace "Ignoring role #{self} in #{fact_type}, subtype fact type" # REVISIT: What about secondary subtypes? # REVISIT: What about dumping the relational mapping when using separate tables? return end return unless is_functional counterpart_role = fact_type.all_role.select{|r| r != self}[0] counterpart_type = counterpart_role.object_type counterpart_role_name = counterpart_role.preferred_role_name counterpart_type_default_role_name = counterpart_type.oo_default_role_name # It's a one_to_one if there's a uniqueness constraint on the other role: one_to_one = counterpart_role.is_functional return if one_to_one && false # REVISIT: !@object_types_dumped[counterpart_role.object_type] # Find role name: role_method = preferred_role_name counterpart_role_method = one_to_one ? role_method : "all_"+role_method # puts "---"+role.role_name if role.role_name if counterpart_role_name != counterpart_type.oo_default_role_name and role_method == self.object_type.oo_default_role_name # debugger counterpart_role_method += "_as_#{counterpart_role_name}" end role_name = role_method role_name = nil if role_name == object_type.oo_default_role_name as_binary(counterpart_role_name, counterpart_type, is_mandatory, one_to_one, nil, role_name, counterpart_role_method) end