Ruby on Rails - handling the error-undefined method 'where'for array in ruby on rails - ruby on rails tutorial - rails guides - rails tutorial - ruby rails
handling the error-undefined method 'where'for #<Array:0x000000071923f8>
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.
lUserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).map(&:user).where.not(:id=>10)
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
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)
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
As joins will output similar records like map but they will be ActiveRecord and not an Array.