Получить объекты, соответствующие одному из столбцов связанных ресурсов в Rails - PullRequest
0 голосов
/ 23 октября 2018

У меня BackgroundJob как

class BackgroundJob < ActiveRecord::Base

  belongs_to :resource, polymorphic: true

end

Здесь ресурсом является Таблица сообщений

class Message < ActiveRecord::Base

  has_one :background_job, as: :resource

end

столбцы Сообщение: электронная почта, текст.Сообщение содержит электронную почту в виде столбца

Я хочу получить все объекты BackgroundJob, столбец электронной почты ресурса которых равен электронной почте 'demo@example.com'.

Как мы можем достичь выше таблицы background_jobs?

Сообщение является ресурсом для объекта BackgroundJob.

Я использую базу данных mysql2.

1 Ответ

0 голосов
/ 23 октября 2018

Вам нужно выполнить JOIN, например:

BackgroundJob.joins('INNER JOIN messages ON messages.id = background_jobs.resource_id AND background_jobs.resource_type = "Message"').where(messages: { email: 'demo@example.com' })

Вы не можете использовать ActiveRecord встроенный механизм и просто написать joins(:resource), потому что это полиморфная ассоциация, и нет дажестол вроде resources.Вот почему вы должны написать JOIN предложение самостоятельно.

...