【发布时间】:2011-02-09 03:42:06
【问题描述】:
我的 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
附加信息:
Job 有很多 audio_file,AudioFile 属于 job。
【问题讨论】:
标签: mysql ruby-on-rails-3 postgresql activerecord