Hi Suppose I have a two models Ticket and Activity Ticket has_many activities Activity belongs_to Ticket Now suppose if the Activity has field name Now for a Ticket with id=1 say there are 10 activities So to update name of all activities I can directly wite the sql statement update activities set name=''somename'' where ticket_id=1 So I am writing this like ticket = Ticket.find(1) ticket.activities.each do |a| a.update_attribute(:name => ''somename'') end But what about the performance Is both the above query and the ruby code has same performance What is actually the generated sql for the ruby code Or Am I wrong? Is there any other way of doing this same like sql above? Thanks in advance Sijo -- Posted via http://www.ruby-forum.com/.
Hi I tried like Activity.update_all("name=''hi''", :conditions => ["ticket_id =?",1]) But getting error ActiveRecord::StatementInvalid: RuntimeError: ERROR C42703 Mcolumn activities.conditions does not exist P42 Fparse_func.c L1104 Runknown_attribute: UPDATE "activities" SET name=''hi'' WHERE ("activities"."conditions" IN (E''ticket_id =?'',1)) Could you please correct the syntax Sijo -- Posted via http://www.ruby-forum.com/.
Maurício Linhares
2009-May-13 11:27 UTC
Re: compare this sql query and corresponding ruby code
Here''s the correct sintax: Activity.update_all( [ ''name = ?'', ''hi'' ] , ["ticket_id =?",1]) - Maurício Linhares http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en) On Wed, May 13, 2009 at 8:24 AM, Sijo Kg <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Hi > I tried like > Activity.update_all("name=''hi''", :conditions => ["ticket_id =?",1]) > > But getting error > ActiveRecord::StatementInvalid: RuntimeError: ERROR C42703 Mcolumn > activities.conditions does not exist P42 Fparse_func.c > L1104 Runknown_attribute: UPDATE "activities" SET name=''hi'' WHERE > ("activities"."conditions" IN (E''ticket_id =?'',1)) > Could you please correct the syntax > Sijo > -- > Posted via http://www.ruby-forum.com/. > > > >
Tom Z Meinlschmidt
2009-May-13 11:28 UTC
Re: compare this sql query and corresponding ruby code
hi, try to look to your development log, u''ll see sql queries there. and you might try this: ticket = Ticket.find(1, :include => [:activity]) and see your query again tom Sijo Kg wrote:> Hi > Suppose I have a two models Ticket and Activity > > Ticket has_many activities > Activity belongs_to Ticket > > Now suppose if the Activity has field name Now for a Ticket with > id=1 say there are 10 activities So to update name of all activities I > can directly wite the sql statement > > update activities set name=''somename'' where ticket_id=1 > > So I am writing this like > > ticket = Ticket.find(1) > ticket.activities.each do |a| > a.update_attribute(:name => ''somename'') > end > But what about the performance Is both the above query and the ruby > code has same performance What is actually the generated sql for the > ruby code > Or Am I wrong? Is there any other way of doing this same like sql > above? > > Thanks in advance > Sijo-- ==============================================================================Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache - experienced RoR/PHP freelancer, available for hire www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz ===============================================================================