Confused by the unit test results.

I'm testing the relation between two of my models: MessageThread (parent), which has_many Message (children). When I run the following test, it gives me an error:

I'm testing the relation between two of my models: MessageThread (parent), which has_many Message (children). When I run the following test, it gives me an error: --------------------------------- # test with a valid message def test_valid_message_new    thread = MessageThread.new :title => 'awesome thread'    message = thread.messages.build(:body =>'total awesomeness')    assert thread.valid?, 'thread not valid'    assert (thread.messages.size == 1)    assert_equal 'total awesomeness', message.body    assert !thread.messages[0].nil?   #line 182, and the line below, line 183    assert thread.messages.find(:first, :conditions => {:body => 'total awesomeness'}), 'Cannot find message' end

--------------------------------- Loaded suite message_thread_test Started .............F Finished in 0.285501 seconds.

1) Failure: test_valid_message_new(MessageThreadTest) [message_thread_test.rb: 183]: Cannot find message. <nil> is not true. --------------------------------- Why doesn't method find() find anything? Is the :condition parameter incorrect? I tried saving message, but it still didn't find the message I was looking for. Is the find method deprecated?

Neither of those objects have been saved, so there is nothing to find.
you would have to save both thread & message.

Fred

Frederick Cheung wrote:

Ahhh..I have to save the thread....I see. Thank you.

OK, new problem: This time, I'm using MessageBoard (child) to acts_as_list for Forum (parent). The models looks as such:

1) Error: test_title_overlap(MessageBoardTest): ActiveRecord::StatementInvalid: Mysql::Error: #42S22Unknown column 'position' in 'order clause': SELECT * FROM message_boards WHERE (forum_id = 2) ORDER BY position DESC LIMIT 1 .... ----------------------------- Does the column name HAVE to be "position"?

No: use the :column option to acts_as_list

Fred