(Rails 4, Ruby 2)

I have two functions which query the database. Both yield a set of model
objects. These two sets should be catenated and presented to the user
using the will_paginate Gem. I think I understand now how to do it, but
a few issues with this are still puzzling me.

Here are the query functions:

  def the_other_dicts_of_same_user(d)
    User.find_by_id(d.user_id).dicts.where("id != #{d.id}")
  end

  def public_dicts_of_other_users(d)
    Dict.where("user_id != #{d.user_id} and world_readable")
  end

Both yield a series of Dict objects. The result of the first query is of
type Dict::ActiveRecord_AssociationRelation and the result of the second
query is of type Dict::ActiveRecord_Relation

I guess I get different data types here, because I start with User in
the first case and with Dict in the second case.

As a side note: I *could* have written the first query alternatively as

   Dict.where("user_id = #{d.user_id} and id != #{d.user_id}")

Would this be better?

Anyway, I catenate the results,

   @dicts=the_other_dicts_of_same_user(d)+public_dicts_of_other_users(d)

which yields again a Dict::ActiveRecord_Relation . Now I apply
pagination:

  @[email protected](....)

This yields the error message, that paginate is not defined for objects
of type Array.

I was able to get around this error, by doing a

  require 'will_paginate/array'

as a first line in my controller, but I wonder: Why do I get this error?
@dicts is NOT an array (I logged @dicts.class.to_s to be sure of this),
and I would have expected to work it in a ActiveRecord_Relation.

Could someone please kindly explain this observed behaviour to me?

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/d85f9c9847591cb08260ea24d7f84554%40ruby-forum.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to