Problem updating child row from parent model


#1

I developped a web site with Ruby on Rails, but I get a problem during
the testing.
I have a parent table called “orders” and a child table called
“line_items”.
I created some data for the test in the files “test/fixtures/orders.yml”
and “test/fixtures/line_items.yml”.
In the file “test/unit/order_test.rb” I wrote some code to test the
“Add”, “Update” and “Destroy” for my model"Order".
My problem is that on the “Update” I try to update a quantity which is a
field of my table “line_items” which is a child of my table “orders”.

For that test I used the following code:

def test_update
assert_equal 2, @order.line_items.first.quantity
@order.line_items.first.quantity = 4
assert @order.save, @order.errors.full_messages.join("; ")
@order.reload
assert_equal 4, @order.line_items.first.quantity
end

And I get the following result:

1> Failure:
test_update [test/unit/order_test.rb:25]:
<4> expected but was <2>.

I tried lots of different things, but I always get that error. I really
don’t know why.

Here’s the declaration of my model order.rb

class Order < ActiveRecord::Base
has_many :line_items, :exclusively_dependent => true
end

Here’s the declaration of my model line_item.rb

class LineItem < ActiveRecord::Base
belongs_to :order
end

And I put at the begining of the order_test.rb file.

fixtures :orders, :line_items

I guess I’m doing wrong, maybe it’s not the way to update a child row or
I probably miss something, unless we can’t update a child row through a
parent model.
If someone has the answer and can help me to figure out why the update
doesn’t work, that will be great.

Thank you.