Forum: Ruby on Rails Expecting a definrd model id, but returning object id

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D51a24ae1017f53158d70b621494255d?d=identicon&s=25 Bontina Chen (abon)
on 2007-01-18 16:06
@u=User.find(session[:user_id])
   @friends=@u.friends
   #puts @friends
   #render :partial => "friend", :collection => @friends

   @friendpicks =@u.friends.collect{|x| x.products.sort_by{|x|
x.id}.reverse.first(10)}

--------------------------so far no
problem---------------------------------------

   @friendpicks.id
(irb):21: warning: Object#id will be deprecated; use Object#object_id
=> 29883400

-----------------------------------------------------------------------------------
I've checked that @friendpicks is an array with
#<Product:0x449263c>
#<Product:0x4492678>
#<Product:0x44926b4>
#<Product:0x448cb88>

but somehow they are all treated as objects and all the methods for
product becomes strangers.

Anyone knows why I'm getting this?
Any help is highly appreciated.


Abon
70c8da82d09d3866222976ab8978133c?d=identicon&s=25 Daniel Nugent (Guest)
on 2007-01-18 16:20
(Received via mailing list)
The answer is that @friendpicks is an array and that you are getting
the object id of the array, not the model ids of the contents of the
@friendpicks array.

You probablly want something more like

@friendpicks.each do |pick|
  pick.id
end

On 1/18/07, Bontina Chen <rails-mailing-list@andreas-s.net> wrote:
> --------------------------so far no
> #<Product:0x44926b4>
>
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>


--
-Dan Nugent
D51a24ae1017f53158d70b621494255d?d=identicon&s=25 Bontina Chen (abon)
on 2007-01-19 02:52
Daniel Nugent wrote:
> The answer is that @friendpicks is an array and that you are getting
> the object id of the array, not the model ids of the contents of the
> @friendpicks array.
>
> You probablly want something more like
>
> @friendpicks.each do |pick|
>   pick.id
> end
>
> On 1/18/07, Bontina Chen <rails-mailing-list@andreas-s.net> wrote:
>> --------------------------so far no
>> #<Product:0x44926b4>
>>
>> --
>> Posted via http://www.ruby-forum.com/.
>>
>> >
>>
>
>
> --
> -Dan Nugent

It still returns the object id.
Anyway I can turn it to a product?
Thanks
70c8da82d09d3866222976ab8978133c?d=identicon&s=25 Daniel Nugent (Guest)
on 2007-01-19 16:31
(Received via mailing list)
Hmm.. sorry, I think I missed a level of nesting.

@friendpicks = @u.friends.collect do |friend|
  friend.products.sort_by do |product|
    product.id
  end.reverse.first(10)
end

So, if I've reinterpreted this right, you're getting a list of lists
of 10 products each, sorted by their id, then reversed.

So to access each of the lists you want @friendpicks.each.  Then to
access each of the picks lists you want @friendpicks.each{|pick|
pick.each} Which will ultimately get you:

@friendpicks.each do |picks|
  picks.each do |pick|
    pick.id
  end
end

Now, if you've got your console open, you can check the class of each
of the objects by using the class method, and if you want to inspect
them, try either p or inspect.

On 1/18/07, Bontina Chen <rails-mailing-list@andreas-s.net> wrote:
> > end
> >
>
> >
>


--
-Dan Nugent
D51a24ae1017f53158d70b621494255d?d=identicon&s=25 Bontina Chen (abon)
on 2007-01-20 05:27

I am not sure I'm getting [[p p][p p][p p p]]
or [p p p p p p].
I would like a [[p p][p p][p p p]] transforming to a [p p p p p p].
Thanks
70c8da82d09d3866222976ab8978133c?d=identicon&s=25 Daniel Nugent (Guest)
on 2007-01-20 06:25
(Received via mailing list)
Okey doke.  I thought you just wanted to iterate through the elements.
 In that case, just add .flatten to the end of that method chain, like
so:

@friendpicks =@u.friends.collect{|x| x.products.sort_by{|x|
x.id}.reverse.first(10)}.flatten

Now, @friendpicks is an array of product objects.  Sorry I
misunderstood!

On 1/19/07, Bontina Chen <rails-mailing-list@andreas-s.net> wrote:
>
> >
>


--
-Dan Nugent
D51a24ae1017f53158d70b621494255d?d=identicon&s=25 Bontina Chen (abon)
on 2007-01-21 03:34
Thanks for all your help.

I'm get an array of products now.
This topic is locked and can not be replied to.