OSDN Git Service

fix remove tree
[pettanr/pettanr.git] / lib / manifest / model / association / has_one.rb
index 6f4e874..20f0721 100644 (file)
@@ -1,29 +1,31 @@
 module Manifest
   module ModelModule
     module AssociationModule
-      class HasOne
-        attr :association, :has_one_name, :has_one_manifest, 
-          :model_name, :foreign_key
-        def initialize association, has_one_name, has_one_manifest
-          @association = association
-          @has_one_name = has_one_name
-          @has_one_manifest = has_one_manifest
-          self.set_default
-          self.init
-        end
+      class HasOne < ManifestBase::NameValues
+        attr :model_name, :foreign_key
         
         def set_default
-          @has_one_manifest['model_name'] ||= @has_one_name
+          super
+          @values['model_name'] ||= @name
+          @values['foreign_key'] ||= @parent.model_name + '_id'
         end
         
         def init
-          @model_name = @has_one_manifest['model_name']
-          raise "undefined foreign_key for models > #{@association.model.model_name} > associations > has_one > #{@has_one_name}\n" unless @has_one_manifest['foreign_key']
-          @foreign_key = @has_one_manifest['foreign_key']
+          super
+          @model_name = @values['model_name']
+          @foreign_key = @values['foreign_key']
+        end
+        
+        def through?
+          @through.blank? == false
+        end
+        
+        def model
+          ::Manifest.item_name_to_model @model_name
         end
         
         def association_name
-          @association.association_name
+          @parent.association_name
         end
         
       end