child = Child.new(...)
parent.list << child
rails will select * all of parent.list before doing the insert of the
new child (if parent.list isn't already loaded). This is -bad- because
my parent.list is huge.
So instead, I do this:
child = Child.new(...)
child.parent = parent
child.save!
This ensures a single insert and also throws an exception if any DB
constraints are violated, thus ensuring any encompassing transactions
and/or top level logging is handled.
is this generally the right thing to do with rails? I'm a noob coming
from enterprise development in other languages.
Or is there some other magic way to add to parent.list with the above
kind behavior?
The most terse way would be
parent.list.create(...)
If you want to defer saving you can instead use the "build" method.
--
We develop, watch us RoR, in numbers too big to ignore.