Ruby on Rails Handling the error - undefined method `where' for #

Example

Sometimes we want to use a where query on a a collection of records returned which is not ActiveRecord::Relation.Hence we get the above error as Where clause is know to ActiveRecord and not to Array.

There is a precise solution for this by using Joins.

EXAMPLE:-

Suppose i need to find all user profiles(UserProfile) which are active which is not a user(User) with an id=10.

UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).map(&:user).where.not(:id=>10)

So above query will fail after map as map will return an array which will not work with where clause.

But using joins,will make it work,

UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).joins(:user).where.not(:id=>10)

As joins will output similar records like map but they will be ActiveRecord and not an Array.