Я пытаюсь выполнить https://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-the-joined-tables
У меня есть класс ImageCollection, статус которого может быть «активным».Этот класс принадлежит одному образу, который имеет атрибут с именем 'workflow_state'.
У меня есть следующее, которое работает, но выполнение занимает несколько секунд:
def self.published
where(status: STATUS_ACTIVE).select { |x| x.image.workflow_state == Publishable::Meta.published_key }
end
Следующее не работает:
scope :published, lambda {
where(status: STATUS_ACTIVE).joins(:image).where(
'image.workflow_state = ?', Publishable::Meta.published_key
)
}
И возвращает:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'image.workflow_state' in 'where clause': SELECT `image_containers`.* FROM `image_containers` INNER JOIN `images` ON `images`.`id` = `image_containers`.`image_id` WHERE `image_containers`.`status` = 'active' AND (image.workflow_state = 'published') ORDER BY `image.containers`.`id` ASC LIMIT 1
Я запутался, так как в таблице изображений есть workflow_state
Любая помощь очень ценится