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