У меня есть следующие области видимости в моей модели работы, и, похоже, есть проблема с некоторыми несоответствиями SQL в моих операторах. Наш dev db был mysql, и, по-видимому, у героку есть postgres и он по-прежнему жалуется как file_count.Решение Activerecord для проблем postgres-mysql
Я планирую просто преобразовать эти области в методы класса или, по крайней мере, изменить инструкции SQL в активные записи, чтобы он мог быть независимым от db. Возможно ли это вообще и как я начну с этого?
Я планирую сохранить is_active, потому что я уверен, что он работает, поскольку это простой оператор области, но with_unclassified_files_available_count нуждается в рефакторе, и я думаю, что рефрактор AR будет хорошей идеей (если вы считаете, что это не так хорошая идея, пожалуйста, сообщите мне об этом, я открыт для предложений)
Вот код:
scope :is_active, where(:active => true)
scope :with_unclassified_files_available_count, where("audio_files.category_id IS NULL")
.joins(AUDIO_FILES)
.select("jobs.*, COUNT(*) AS file_count")
.group("jobs.id")
.order("batch_identifier DESC")
scope :has_files_available, with_unclassified_files_available_count.having("count(*) > 0")
scope :available_to_work_on, is_active.has_files_available
Дополнительная информация:
Работа имеет много audio_files и AudioFile принадлежит работа.