-require_dependency "manifest/model/association/belongs_to"
-require_dependency "manifest/model/association/has_many"
-require_dependency "manifest/model/association/has_one"
+ManifestBase.require_modules "manifest/model/association/",
+ %w|belongs_to has_many has_one|
+
module Manifest
module ModelModule
class Association < ManifestBase::Values
def set_default
super
- @args['belongs_to'] ||= {}
- @args['has_many'] ||= {}
- @args['has_one'] ||= {}
+ @values['belongs_to'] ||= {}
+ @values['has_many'] ||= {}
+ @values['has_one'] ||= {}
end
def init
super
- @belongs_to = {}
- @has_many = {}
- @has_one = {}
- @args['belongs_to'].each {|name, json|
- @belongs_to[name] = BelongsTo.new(self, name, json)
- }
- @args['has_many'].each {|name, json|
- @has_many[name] = HasMany.new(self, name, json)
- }
- @args['has_one'].each {|name, json|
- @has_one[name] = HasOne.new(self, name, json)
- }
+ @belongs_to = ManifestBase.load_name_values self, @values, 'belongs_to', BelongsTo
+ @has_many = ManifestBase.load_name_values self, @values, 'has_many', HasMany
+ @has_one = ManifestBase.load_name_values self, @values, 'has_one', HasOne
end
def model_name
@parent.name
end
+ def each_parent_model
+ @belongs_to.each do |name, belongs_to_manifest|
+ next unless @parent.classify.element?
+ if @parent.classify.my_peta.type == 'element'
+ next unless belongs_to_manifest.model.my_peta.type == 'root'
+ end
+ if @parent.classify.my_peta.type == 'leaf'
+ next unless belongs_to_manifest.model.my_peta.type == 'binder'
+ end
+ p [@parent.classify , belongs_to_manifest.model]
+ yield belongs_to_manifest.model
+ end
+ end
+
def child_element_name child_model
if @has_one[child_model.item_name]
child_model.item_name