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"
Ruby on Rails ActiveRecord Query Interface Joins joins() allows you to join tables to your current model. For ex. User.joins(:posts)
Rails 6.0 ships with all the rails tasks you need to use multiple databases in Rails. Running a command like bin/rails db:create will create both the primary and animals databases.
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.
In rails 4 you can make this even more clear:
User.joins(:pets).where.not(pets: { name: 'fluffy' })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With