4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/dige/associations.rb', line 4
def register(from_class_name, from_table_name, to_class_name, to_table_name, type, assoc_macro, table_name)
tail_class_name = [ :belongs_to ].include?(assoc_macro) ? from_class_name : to_class_name
tail_table_name = [ :belongs_to ].include?(assoc_macro) ? from_table_name : to_table_name
head_class_name = [ :belongs_to ].include?(assoc_macro) ? to_class_name : from_class_name
head_table_name = [ :belongs_to ].include?(assoc_macro) ? to_table_name : from_table_name
objekt = Dige::Association.new({
:from_class_name => tail_class_name,
:from_table_name => tail_table_name,
:to_class_name => head_class_name,
:to_table_name => head_table_name,
:type => type,
:table_name => table_name
})
objekt.macro = assoc_macro if type == :polymorphic
unless return_objekt = find(objekt)
list << objekt
return_objekt = objekt
end
if assoc_macro == :has_many || assoc_macro == :has_and_belongs_to_many
return_objekt.from_arity = '0..*'
elsif assoc_macro == :has_one
return_objekt.from_arity = '1'
elsif assoc_macro == :belongs_to
return_objekt.to_arity = '1'
end
return_objekt
end
|