Recently I discovered one thing I didn't even think about, or I believed it to work absolutely differently.
So, to explain it, given the following models:
class Project < AR
has_many :participants
end
class Participant < AR
belongs_to :project
end
Here is what is going in the console:
irb(main):003:0> p=Project.create(:name=>'java')
←[1m←[36m (0.0ms)←[0m ←[1mSAVEPOINT active_record_1←[0m
←[1m←[35mSQL (43.0ms)←[0m INSERT INTO "projects" ("created_at", "name", "updated_at") VALUES (?, ?, ?) [["
created_at", Thu, 28 Mar 2013 19:27:06 UTC +00:00], ["name", "java"], ["updated_at", Thu, 28 Mar 2013 19:27:06
UTC +00:00]]
←[1m←[36m (0.0ms)←[0m ←[1mRELEASE SAVEPOINT active_record_1←[0m
=> #<Project id: 1, name: "java", created_at: "2013-03-28 19:27:06", updated_at: "2013-03-28 19:27:06">
irb(main):004:0> p.participants
←[1m←[35mParticipant Load (0.0ms)←[0m SELECT "participants".* FROM "participants" WHERE "participants"."pro
ject_id" = 1
=> []
irb(main):005:0> part = p.participants.new(username:'toto')
=> #<Participant id: nil, username: "toto", project_id: 1, created_at: nil, updated_at: nil>
irb(main):006:0> p.participants
=> [#<Participant id: nil, username: "toto", project_id: 1, created_at: nil, updated_at: nil>]
I always believed that the collection of participants should keep the same size (zero in the above case) until I call save on the Project object. As you see the collection has been changed by 1, despite the record has not been yet save to the database; Is it a normal behaviour ?
Thanks in advance for your help.
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/bpYguEZnmpEJ.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment