X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=lib%2Fmanifest%2Fmodel%2Fassociation.rb;h=b9e101c44c058dd51baf0c45458085ce47917f24;hb=ae65f3fa406f90544b2afa166a274746bebce68d;hp=e81624b62dd4bb99a4263446659e50c9b7ae858f;hpb=9599d60436ead2edc4d15ffc48d095c3b6cef817;p=pettanr%2Fpettanr.git diff --git a/lib/manifest/model/association.rb b/lib/manifest/model/association.rb index e81624b6..b9e101c4 100644 --- a/lib/manifest/model/association.rb +++ b/lib/manifest/model/association.rb @@ -1,6 +1,6 @@ -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 @@ -10,31 +10,36 @@ module Manifest 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