def belongs_to(name, *args)
name = name.to_sym
model_name = self.name
model = extract_model(args)
options = extract_options(args)
if options.key?(:through)
raise "#{model_name}#belongs_to with :through is deprecated, use 'has 1, :#{name}, #{options.inspect}' in #{model_name} instead (#{caller.first})"
elsif options.key?(:model) && model
raise ArgumentError, 'should not specify options[:model] if passing the model in the third argument'
end
assert_valid_options(options)
model ||= options.delete(:model)
repository_name = repository.name
options[:child_repository_name] = repository_name
options[:parent_repository_name] = options.delete(:repository)
relationship = Associations::ManyToOne::Relationship.new(name, self, model, options)
relationships(repository_name) << relationship
descendants.each do |descendant|
descendant.relationships(repository_name) << relationship
end
create_relationship_reader(relationship)
create_relationship_writer(relationship)
relationship
end