У меня есть следующие области действия в моей модели Job, и кажется, что есть проблема с некоторыми несоответствиями SQL в моих утверждениях.Нашим разработчиком была база данных mysql, и, очевидно, у heroku есть postgres, и он почему-то продолжает жаловаться на file_count.
Я планирую просто преобразовать эти области в методы класса или, по крайней мере, изменить операторы SQL в методы активной записи,может быть независимым от БД.Возможно ли это вообще, и как мне начать с этого?
Я планирую сохранить 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
Дополнительная информация:
В задании много аудиофайлов, а аудиофайл принадлежит заданию.