【发布时间】:2012-11-19 21:45:31
【问题描述】:
所以,这是我在这个项目的工作过程中第三次收到这个错误,几个月前我发布了一个关于这个的问题 ActiveRecord::StatementInvalid (PG::Error: ERROR: column does not exist
Heroku 日志
2012-11-19T05:04:20+00:00 app[web.1]: Processing by MainController#home as HTML
2012-11-19T05:04:20+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms
2012-11-19T05:04:20+00:00 app[web.1]:
2012-11-19T05:04:20+00:00 app[web.1]: LINE 1: SELECT "apartments".* FROM "apartments" WHERE (Bed = 0)
2012-11-19T05:04:20+00:00 app[web.1]: ^
2012-11-19T05:04:20+00:00 app[web.1]: app/controllers/main_controller.rb:6:in `home'
2012-11-19T05:04:20+00:00 app[web.1]: : SELECT "apartments".* FROM "apartments" WHERE (Bed = 0)):
2012-11-19T05:04:20+00:00 app[web.1]:
2012-11-19T05:04:20+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR: column "bed" does not exist
控制器代码
def home
@apartments = Apartment.all
@studio = Apartment.where(:Bed => 0).all
@oneBdr = Apartment.where(:Bed => 1).all
@twoBdr = Apartment.where(:Bed => 2).all
@threeBdr = Apartment.where(:Bed => 3).all
@fourPlusBdr = Apartment.where("Bed >= 4").all
end
基本上,前两次我可以通过从 find 切换到 where 来修复它,然后第二次从 where 返回到 find 。我永远无法理解为什么它会起作用,但它确实如此,所以我最终忘记了它,直到我再次开始收到错误。现在,无论我在哪里/查找搜索之间交换,我仍然会遇到同样的错误。任何帮助都将受到高度欢迎我对这个问题的原因可能是什么有点迷茫。
提前致谢!
【问题讨论】:
-
假设您已使用
heroku run rake db:migrate进行迁移,请尝试使用原始 sql 查询Apartment.find_by_sql("SELECT apartments.* FROM apartments WHERE (bed = 0)")看看它是否有效。另外,这并不是说这应该导致错误,但为什么不遵循约定并使用小写的列名呢? -
@cdesrosiers 不幸的是,原始 sql 没有做任何事情,仍然返回相同的错误。此外,该列都是小写的,但我只是想测试一下大写是否可以解决问题,正如你所说,这不是错误的原因。
标签: ruby-on-rails activerecord heroku where pg