#ruby-on-rails #ruby-on-rails-4 #rails-activerecord
#ruby-on-rails #ruby-on-rails-4 #rails-activerecord
Вопрос:
Я хочу получить коллекцию «сообщений», которые были сделаны за прошедший день, и получить все электронные письма их автора.
An author has_many posts
.
Шаг 1: получить все записи, созданные сегодня (работает)
Posts.where('created_at > :today', today: Time.zone.now.beginning_of_day)
Шаг 2: Получить всех авторов для этих сообщений (каков синтаксис для этого?)
Posts.where('created_at > :today', today: Time.zone.now.beginning_of_day).authors??? # Returns undefined method for ActiveRecord_Relation.
Ответ №1:
Таким образом, вы можете получить массив электронных писем:
Posts.where('created_at > :today', today: Time.zone.now.beginning_of_day).joins(:author).pluck("authors.email")
Если вам нужно ActiveRecord::Relation
, вы должны начать свой запрос с класса, который вы хотите получить
Author.joins(:posts).where("posts.created_at > :today", today: Time.zone.now.beginning_of_day)
Ответ №2:
Нетерпеливый автор загрузки
Posts.includes(:author).where('created_at > :today', today: Time.zone.now.beginning_of_day).collect(amp;:author)