У меня есть следующие классы в моем приложении:Использование включает в себя с функциями AREL
class Prompt
has_many :entries
end
class Entry
belongs_to :prompt
belongs_to :user
def self.approved
where("is_approved")
end
end
class User
has_many :entries
end
И я хочу, чтобы отобразить таблицу всех «утвержден» записи для данного запроса и пользователей, что они belong_to
. Чтобы создать этот список, я сделать следующий запрос:
prompt = Prompt.find(prompt_id, :include => {:entries => :user})
Но когда я запускаю следующий цикл, он делает запрос для каждого пользователя, а не использовать упреждающие пользователь
prompt.entries.approved.each do |entry|
puts entry.user.id
end
Как я переписать это так, чтобы он не выполнял запрос для каждой итерации цикла?
Есть ли способ, который я могу инкапсулировать эту «утвержденную» логику в функцию? Кроме того, как бы вы написали его так, чтобы результатом был объект 'Prompt' со всем, что с нетерпением было загружено – sguha
Хм, насколько я могу понять, что own_to/has_many не будет охотно загружать другой путь, но с @entries = Entry.where (is_approved: true), вы должны иметь возможность получить доступ к загруженному с запросом приглашению entries.prompt.each do | prompt |. Извините –