12

我刚推出了一个应用程序到一个生产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。一切工作正常我的本地机器上。

回答

10

这是老生常谈,但我早上又试了一次,它完美的作品!我怀疑这可能是某种传播问题。

+29

发生这种情况时,请尝试'heroku重新启动'。运行迁移后我遇到了这个问题,但重新开始解决问题。 – Leito

+1

我尝试过'heroku restart',但它不适合我,所以我搜索了这个问题,并且遇到了这篇文章,然后意识到'heroku restart'默认为我的临时环境。强制我的生产应用程序:'heroku restart --app myproductionapp'工作! – DJTripleThreat

+0

这一定是因为你部署了应用程序,运行了迁移。但该应用程序已在运行,所以它没有注意到db方案中的更改。也就是说,你必须[重启](http://stackoverflow.com/a/15743272/52499)[it](http://stackoverflow.com/a/20188292/52499)。 –

0

试试这个

attr_reader :seats 
attr_accessor :seats 

,而不是

attr_accessible :seats 
+0

这个问题似乎在一夜之间就解决了。可能是一个传播问题或什么的。不管怎么说,还是要谢谢你。 –

3

我在生产中遇到了与我的Heroku应用程序相同的问题,但与我的差不多相同的应用程序正在执行中。

有什么区别?我升级的应用程序只有1个测功机,而不是2

所以我手动缩放我的生产应用程序降至0网络DYNOS,然后回升到2

BAM!问题解决了。

1

拉着我的头发,直到我看到莱托的评论如上。

heroku restart --app staging 

为我解决了这个问题。

+1

不能相信这是解决方案,但非常安心谢谢 –

相关问题