我只是将应用程序推送到生产Heroku环境。
基本上有一个Bus
模型,它有一个seats
属性
class Bus < ActiveRecord::Base
attr_accessible :seats, # other attributes
end
现在我有一个JavaScript前端,POST的JSON用于buses#create
动作的新总线。
当我尝试创建总线时,ActiveRecord一直遇到错误:
: POST www.busables.com/buses dyno=web.1 queue=0 wait=5ms service=65ms status=500 bytes=728
:
: ActiveRecord::UnknownAttributeError (unknown attribute: seats):
: app/controllers/buses_controller.rb:31:in `new'
: app/controllers/buses_controller.rb:31:in `create'
参数正在达到控制器动作。我可以记录它们,然后我得到了以下内容:
The bus parameters received: {"seats"=>"24", "departure_time(1i)"=>"2011", "departure_time(2i)"=>"11", "departure_time(3i)"=>"25", "departure_time(4i)"=>"16", "departure_time(5i)"=>"15", "route_attributes"=>{"summary"=>"N51", "beginning_address"=>"A place", "terminal_address"=>"Another place", "distance"=>26362, "duration"=>1753}}
我检查了Bus
表实际上有seats
列,它确实(我在Heroku控制台中运行了它):
> Bus.column_names
=> ["id", "name", "route_id", "created_at", "updated_at", "price", "departure_time", "trip_distance", "trip_duration", "seats"]
当然,我已经尝试迁移和加载数据库架构。我已经检查过attr_accessible :seats
也设置正确。
还有其他想法吗?
我在Heroku Cedar堆栈上运行Rails 3.1.1。在我的本地机器上一切正常。
答案 0 :(得分:10)
这是陈词滥调,但我早上再次尝试,它完美无缺!我怀疑它可能是某种传播问题。
答案 1 :(得分:3)
我的Heroku应用程序在生产中遇到了同样的问题,但是我的几乎相同的应用程序在分期中没有。
有什么区别?我的暂存应用程序只有1个web dyno而不是2个。
所以我手动将我的制作应用程序缩放到0网络动态,然后再回到2。
BAM!问题解决了。
答案 2 :(得分:2)
直到我看到上面Leito的评论,才把头发拉出来。
heroku restart --app staging
为我修好了这个。
答案 3 :(得分:0)
试试这个
attr_reader :seats
attr_accessor :seats
而不是
attr_accessible :seats