내 직업 모델에 다음과 같은 범위가 있는데 내 명세서에 SQL 불일치 문제가있는 것 같습니다. 우리의 dev db는 mysql이었고 분명히 heroku는 postgres를 가지고 있으며 어떤 이유로 file_count로 불평을 계속합니다.postgres-mysql 문제에 대한 Activerecord 솔루션
이 스코프를 클래스 메소드로 변환하거나 최소한 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은 작업에 속한다.