Considérez ces deux modèles :
class User < ApplicationRecord
has_many :blogs
end
class Blog < ApplicationRecord
belongs_to :user
end
J'aimerais faire quelque chose comme ça mais ça ne marchera pas :
my_users = User.where(age: 35)
all_assoc_blogs = my_users.blogs # errors out
Voici l'erreur :
Méthode non définie "Blogs" pour User::ActiveRecord_Relation :
Je comprends pourquoi cela ne fonctionne pas : vous pouvez seulement appeler blogs
sur un seul user
objet. Vous ne pouvez pas appeler blogs
sur un objet de relation d'enregistrement actif de users
.
En fin de compte, je veux un objet de relation d'enregistrement actif qui consiste en un agrégat de tous les blogs pour tous les utilisateurs dans l'application my_users
objet de relation d'enregistrement actif. Existe-t-il un moyen simple de le faire ? C'est le seul moyen auquel je pense et il est assez laid :
my_users = User.where(age: 35)
temp_blogs = []
my_users.each {|u| temp_blogs << u.blogs.to_a}
blog_ids = temp_blogs.flatten.pluck(:id)
Blog.where(id: blog_ids)