I believe you are right. I'm replacing the patches. Hugo Peixoto --
website: http://hugopeixoto.net On Sun, Mar 6, 2011 at 10:10 AM, Adam Wróbel <[email protected]> wrote: > I think the "WHERE (highlighted = 't')" part should be put in the inner query > for this to work correctly. > > The query you've shown us selects id of the first highlighted_at object. It > might or might not pass the update condition and so the complete query will > update one or no rows, even though further in the defined order there might > be other rows that would pass the update condition. > > Adam > > On Mar 6, 2011, at 03:11 , Hugo Peixoto wrote: > >> Hey, >> >> I've submitted some patches to ARel that (supposedly) fix the following bugs: >> >> https://rails.lighthouseapp.com/projects/8994/tickets/6058-update_all-ignores-conditions-when-orders-and-limit-options-are-supplied#ticket-6058-7 >> https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/6459-arel-update-method-silently-drops-offset-clause#ticket-6459-2 >> >> Before applying these patches, ARel has the following behaviour: >> >> ruby > News.where("highlighted = ?", >> true).order("highlighted_at").limit(1).offset(1).update_all(:highlighted >> => false) >> UPDATE "news" SET "highlighted" = 'f' WHERE "news"."id" IN (SELECT >> "news"."id" FROM "news" ORDER BY highlighted_at LIMIT 1) >> >> Note how both the where("highlighted = ?", true) and offset(1) clauses >> are ignored. After the patches, it yields the following: >> UPDATE "news" SET "highlighted" = 'f' WHERE (highlighted = 't') AND >> "news"."id" IN (SELECT "news"."id" FROM "news" ORDER BY highlighted_at >> LIMIT 1 OFFSET 1) >> >> Feedback on these would be appreciated. >> >> Hugo Peixoto >> -- >> >> website: http://hugopeixoto.net >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ruby on Rails: Core" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/rubyonrails-core?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-core?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
