Skip to content

Commit

Permalink
Allow ho:through#build when the owner is a new record [#1749 state:re…
Browse files Browse the repository at this point in the history
…solved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
  • Loading branch information
tristandunn authored and lifo committed Aug 9, 2009
1 parent 0472839 commit a0f6972
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@ def create_through_record(new_value) #nodoc:
current_object = @owner.send(@reflection.through_reflection.name)

if current_object
new_value ? current_object.update_attributes(construct_join_attributes(new_value)) : current_object.destroy
else
@owner.send(@reflection.through_reflection.name, klass.send(:create, construct_join_attributes(new_value))) if new_value
new_value ? current_object.update_attributes(construct_join_attributes(new_value)) : current_object.destroy
elsif new_value
if @owner.new_record?
self.target = new_value
through_association = @owner.send(:association_instance_get, @reflection.through_reflection.name)
through_association.build(construct_join_attributes(new_value))
else
@owner.send(@reflection.through_reflection.name, klass.create(construct_join_attributes(new_value)))
end
end
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@ def test_creating_association_creates_through_record
assert_not_nil new_member.current_membership
assert_not_nil new_member.club
end

def test_creating_association_builds_through_record_for_new
new_member = Member.new(:name => "Jane")
new_member.club = clubs(:moustache_club)
assert new_member.current_membership
assert_equal clubs(:moustache_club), new_member.current_membership.club
assert_equal clubs(:moustache_club), new_member.club
assert new_member.save
assert_equal clubs(:moustache_club), new_member.club
end

def test_replace_target_record
new_club = Club.create(:name => "Marx Bros")
Expand Down

0 comments on commit a0f6972

Please sign in to comment.