2008-05-18 06:22:34 +02:00
|
|
|
module ActiveRecord
|
|
|
|
module Associations
|
|
|
|
class HasOneThroughAssociation < HasManyThroughAssociation
|
|
|
|
|
|
|
|
def create_through_record(new_value) #nodoc:
|
|
|
|
klass = @reflection.through_reflection.klass
|
|
|
|
|
|
|
|
current_object = @owner.send(@reflection.through_reflection.name)
|
|
|
|
|
|
|
|
if current_object
|
2008-11-24 22:53:39 +01:00
|
|
|
current_object.update_attributes(construct_join_attributes(new_value))
|
|
|
|
else
|
|
|
|
@owner.send(@reflection.through_reflection.name, klass.send(:create, construct_join_attributes(new_value)))
|
2008-05-18 06:22:34 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
def find(*args)
|
|
|
|
super(args.merge(:limit => 1))
|
|
|
|
end
|
|
|
|
|
|
|
|
def find_target
|
|
|
|
super.first
|
2008-09-07 07:54:05 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def reset_target!
|
|
|
|
@target = nil
|
2008-05-18 06:22:34 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|