我想按日期字符串对帖子进行分组,在该组中我想按名称对它们进行排序。日期列名为 releaseDate ,名称称为 releaseName 。
这就是我在控制器中所拥有的:
def index
@upcoming_releases = UpcomingRelease.all(:order => 'releaseDate, releaseName')
respond_to do |format|
format.html
format.json { render json: @upcoming_releases }
end
end
在我的本地应用程序中工作正常但是一旦我部署到Heroku我就会收到此错误:
2014-01-17T00:21:54.801562+00:00 app[web.1]: : SELECT "upcoming_releases".* FROM "upcoming_releases" ORDER BY releaseDate, releaseName):
2014-01-17T00:21:54.801562+00:00 app[web.1]:
2014-01-17T00:21:54.801336+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "releasedate" does not exist
2014-01-17T00:21:54.801562+00:00 app[web.1]:
2014-01-17T00:21:54.801336+00:00 app[web.1]: : SELECT "upcoming_releases".* FROM "upcoming_releases" ORDER BY releaseDate, releaseName):
2014-01-17T00:21:54.801336+00:00 app[web.1]:
2014-01-17T00:21:54.801336+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "releasedate" does not exist
2014-01-17T00:21:54.801562+00:00 app[web.1]: app/controllers/upcoming_releases_controller.rb:5:in `index'
我尝试将 releaseDate 更改为 release_date ,但它不起作用。有什么帮助吗?
感谢。
答案 0 :(得分:1)
对pg列案例敏感性的一点研究使我得到了这个网址https://drupal.org/node/1622982。似乎为了让pg停止将列名更改为小写,您需要将其包装在引号中。尝试
UpcomingRelease.all(:order => '"releaseDate", "releaseName"')
如果您编写了大量的sql语句,我认为这将成为一个问题。一种解决方案是遵循rails约定并更改列名以使用下划线表示法。您可以通过创建迁移并添加以下内容来实现此目的
rename_column :upcoming_releases, :releaseDate, :release_date
另一个问题是确保您使用pg作为本地数据库,因此您很可能拥有与生产服务器相同的设置。