On 14 February 2011 21:03, Jeremy <[email protected]> wrote:
> I've noticed a rather insidious 3.0.4 change to the way that chained
> where methods that reference the same attribute are handled.  Does
> anyone know where I can find more information about where/when this
> change came in, and the justification for it?  I haven't been able to
> find a changelog mentioning this modification.
>
> Essentially, when you chain two where methods together that reference
> the same attribute, the SQL query generated uses an OR on that
> attribute, rather than AND.
>
> Example:
>
> Rails 3.0.3
> State.where(:abbreviation => 'TX').where(:abbreviation => 'NE')
> SQL: SELECT `states`.* FROM `states` WHERE (`states`.`abbreviation` =
> 'TX') AND (`states`.`abbreviation` = 'NE')
>
> Rails 3.0.4
> State.where(:abbreviation => 'TX').where(:abbreviation => 'NE')
> SQL: SELECT `states`.* FROM `states` WHERE (`states`.`abbreviation` =
> 'TX' OR `states`.`abbreviation` = 'NE')

I can confirm I see the same issue on 3.0.4 (not tried on 3.0.3).  It
looks like a bug to me.

Colin

-- 
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 [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-talk?hl=en.

Reply via email to