Assigning to has_one or has_many association automatically saves object however assigning to a belongs_to association doesnt save the object.
A User has_many messages
controller:
u = User.find(session[:user_id])
messageSubject = params[:msgSub] || "No Subject"
message = u.messages.find_by_subject(messageSubject)
if message.nil?
u.messages << subject =""> messageSubject)
message = u.messages.last
end
development.log:
User Columns (0.000000) SHOW FIELDS FROM users
Message Columns (0.016000) SHOW FIELDS FROM messages
Message Load (0.000000) SELECT * FROM messages WHERE (messages.user_id = 1) AND (messages.`subject1 = 'No Subject' ) LIMIT 1
Couldn't find a message with name No Subject. Creating a new message.
Message Load (0.000000) SELECT * FROM messages WHERE (messages.user_id = 1) ORDER BY position
SQL (0.000000) BEGIN
Message Load (0.000000) SELECT * FROM messages WHERE (subject = 'No Subject') LIMIT 1
Message Load (0.000000) SELECT * FROM messages WHERE (user_id = 1) ORDER BY position DESC LIMIT 1
SQL (0.000000) INSERT INTO messages (`subject`, `updated_at`, `user_id`, `position`, `created_at`) VALUES('No Subject', '2006-02-01 12:41:48', 1, 1, '2006-02-01 12:41:48')
SQL (0.000000) COMMIT
Note that the reverse is not true...
If I do
pod = Pod.new(:name => podname)
pod.user = u
this will not save the pod until explictly saved!! Since Pod "belongs_to" a user, assigning to a "belongs_to" association doesn't automatically save either of the objects to the db.