Rails ActiveRecord: изменить класс ruby, используемый для коллекции, после объединения - PullRequest
0 голосов
/ 03 мая 2018

Допустим, у меня есть эти модели, между которыми есть ассоциации:

class Book
  belongs_to :publisher
  belongs_to :author
end

class Publisher
  has_many :books
end

class Author
  has_many :books
end

Я написал такой запрос:

def get_old_authors_at_publisher(publisher, date)
  publisher
    .books
    .joins(:author)
    .where('"book"."publication_date" < ?', date)
end

Проблема в том, что этот запрос возвращает книги, но я хочу авторов. Должна быть возможность сделать авторов из результата запроса, потому что все столбцы доступны (что-то вроде SELECT "authors".* должно работать), но я не могу понять, как это сделать.

1 Ответ

0 голосов
/ 03 мая 2018

Добавление has_many через ассоциацию к модели Publisher:

class Publisher
  has_many :books
  has_many :authors, through: :books
end

Затем вы можете использовать его из экземпляра Publisher:

publisher.authors.where('books.publication_date < ?', 5.years.ago)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...