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.

Reply via email to