given parent.list is a has_many of Child, I''ve found that if I do this:
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?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Mark Reginald James
2006-Dec-27 04:14 UTC
Re: ActiveRecord: adding children to a has_many parent
bataras wrote:> > given parent.list is a has_many of Child, I''ve found that if I do this: > > 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!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. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Cool. Thanks. I''ll use that. In one case though, I have to create a new child that "belongs_to" 2 different kinds of parents. So for that, I''ll have to use the build method to make it happen in a single insert. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---