Le code donné dans la question choisit cinq marques de voiture appartenant à un utilisateur particulier. C'est un utilisateur assez chanceux.
Si nous supposons que vous essayez de choisir cinq marques au hasard parmi toutes les voitures appartenant à au moins un de vos utilisateurs, je pense que vous voulez quelque chose comme ceci:
Car.select("DISTINCT cars.brand_id").order("RANDOM()").joins(:user).limit(5)
Cela devrait fonctionner si tant que Car a une relation de appartenance à l'utilisateur.
Si vous voulez vraiment limiter la portée à une seule des voitures de l'utilisateur, alors vous voulez quelque chose comme ceci:
@user.cars.select("DISTINCT cars.brand_id").order("RANDOM()").limit(5)
Pour ce que ça vaut, dans une base MySQL dont vous avez besoin « pour (RAND()) » plutôt que "order (RANDOM())".
Quel moteur DB utilisez-vous? (MySQL, SQLite etc?) – Swanand
MySQL - bien que le select ('DISTINCT brand_id') ne fonctionne pas seul. – sscirrus
La portée des voitures est-elle? – Bohdan