Ruby on Rails Sunday, February 27, 2011

On 16 February 2011 11:43, Colin Law <clanlaw@googlemail.com> wrote:
> On 16 February 2011 09:44, Colin Law <clanlaw@googlemail.com> wrote:
>> On 16 February 2011 05:42, Mark Kremer <mark@without-brains.net> wrote:
>>> It may seem a bit odd with the where method chained twice like that, but the
>>> query with the OR (Rails 3.0.4) will probably get you the result you want
>>> whereas the query with the AND (Rails 3.0.3) will return 0 records at all
>>> times (because the same attribute can't have two values).
>>
>> I disagree that OR is the result one would want if one were to code
>> this.  I agree it is apparently a useless query and obviously one
>> would not code it exactly like this.  If the sql for this is
>> incorrectly generated however, it is likely that a more subtle, and
>> useful, query may also be encoded wrongly.  The principle of chained
>> where is that the first one is performed, then the next is performed
>> on the results of the first.  At least that is how I understand it.
>>
>> Consider:
>> State.where(:abbreviation =>  'TX').where("abbreviation =  'NE'")
>> This (correctly in my view) uses AND in the query.
>> As 3.0.4 stands at the moment the above yields a different result to
>> State.where(:abbreviation =>  'TX').where(:abbreviation =>  'NE')
>> which seems incorrect to me.
>>
>> I will post on rails-core to see what the response is there.
>
> I posted to rails-core and apparently it is by design rather than a
> bug.  The question seems to have stirred up a bit of a furore however,
> see http://groups.google.com/group/rubyonrails-core/browse_thread/thread/407f746fd1de6636

I see this has now been fixed in the Rails 3.0.5, though I have not
tried it myself yet.

Thanks to Jeremy for finding it in the first place.

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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment