Ruby on Rails ActiveRecord query using a join

activerecord, ruby-on-rails

Solution

This should work:

User.joins(:pets).where("pets.name != 'fluffy'")

Also you might want to read the following part (on `joins`) on the official RoR guidelines.

Problem

I have a User model and the user has a relationship which is has_many pets. I want to be able to write an ActiveRecord query where I can select all users with a pet that doesn't have a pet.name of "fluffy" What's the most efficient way to write this using ActiveRecord? Using straight SQL it would look something such as the following: `select id from users INNER JOIN pets ON u.id = pets.user_id WHERE pets.name != "fluffy"`

Original source