我刚推出了一个应用程序到一个生产Heroku环境。ActiveRecord :: UnknownAttributeError?
基本上是有Bus
模型,它有一个seats
属性
class Bus < ActiveRecord::Base
attr_accessible :seats, # other attributes
end
现在我有一个JavaScript的前端,其邮政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。一切工作正常我的本地机器上。
发生这种情况时,请尝试'heroku重新启动'。运行迁移后我遇到了这个问题,但重新开始解决问题。 – Leito
我尝试过'heroku restart',但它不适合我,所以我搜索了这个问题,并且遇到了这篇文章,然后意识到'heroku restart'默认为我的临时环境。强制我的生产应用程序:'heroku restart --app myproductionapp'工作! – DJTripleThreat
这一定是因为你部署了应用程序,运行了迁移。但该应用程序已在运行,所以它没有注意到db方案中的更改。也就是说,你必须[重启](http://stackoverflow.com/a/15743272/52499)[it](http://stackoverflow.com/a/20188292/52499)。 –