Рассмотрим эти две модели:
class User < ApplicationRecord
has_many :blogs
end
class Blog < ApplicationRecord
belongs_to :user
end
Я бы хотел сделать что-то подобное, но это не сработает:
my_users = User.where(age: 35)
all_assoc_blogs = my_users.blogs # errors out
Вот ошибка:
неопределенный метод `blogs 'для User :: ActiveRecord_Relation:
Я понимаю, почему он не работает: вы можете вызывать blogs
только для одного user
объекта.Вы не можете вызвать blogs
для объекта отношения активной записи users
.
В конечном счете, я хочу объект отношения активной записи, который состоит из совокупности всех блогов для всех пользователей в my_users
объект отношения активной записи.Есть ли способ сделать это?Это единственный способ, которым я могу придумать, и он довольно уродливый:
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)