Ah, you're trying to mix and match two of the three different #find
syntaxes:
- find(:first, options)
- find(:all, options)
- find(*ids)
Give Person.find(:all, :conditions => {:id => id_list}) a shot.
Cheers
--
Pat
On 19/08/2008, at 12:51 AM, Glenn Little wrote:
>
> Just fyi, there's a gotcha with this. If you're using the "give
> find() a list
> of id's" format, using :all happily ignores the list of ids and just
> returns
> all records:
>
> id_list = [1,3,5]
> Person.find(id_list).map{|p| p.id}
> => [1,3,5]
> Person.find(:all, id_list).map{|p| p.id}
> => [1,2,3,4,5,6,7....]
>
> Maybe obvious, since this is in some sense a "different" find() call
> where :all or :first don't make sense. But it does mean that
> different
> usages of find may need to be treated differently when trying to
> assure that their results are array-ized.
>
> -glenn
>
>
> Jordan Fowler wrote:
>> I'd say if you'd always like an array from ActiveRecord::Base#find,
>> to
>> use the :all option.
>>
>> --Jordan
>>
>> On Mon, Aug 18, 2008 at 3:43 PM, Glenn Little <[EMAIL PROTECTED]
>> <mailto:[EMAIL PROTECTED]>> wrote:
>>
>>
>> We have a number of places where we use the to_a method on the
>> return of an ActiveRecord find call. For instance:
>>
>> people = Person.find(blah blah).to_a
>>
>> This way, whether one or more Person objects are returned,
>> "people"
>> is always an array of 0 or more elements.
>>
>> I notice now though that I'm getting warnings:
>>
>> warning: default 'to_a' will be obsolete
>>
>> I believe this is from Ruby, and applies when an object does
>> not define its own to_a method. I believe this is only the case
>> when my find() happens to return 1 element (an ActiveRecord object
>> instead of an array of ActiveRecord objects), so I guess the
>> ActiveRecord objects are not defining their own to_a?
>>
>> Is there a different "best practice" I might want to follow in the
>> above case so that I always have an array as a find() result?
>>
>> Thanks!
>>
>> -glenn
>>
>>
>>
>>
>>
>> --
>> Jordan A. Fowler
>> 2621 First Ave Apt 5
>> San Diego, CA 92103
>> E-mail: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>> Website: http://www.jordanfowler.com
>> Office Phone: (619) 618-0355
>> Cell Phone: (406) 546-8055
>>
>>>
>
> >
--~--~---------~--~----~------------~-------~--~----~
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby
-~----------~----~----~----~------~----~------~--~---