在Heroku控制台中创建新模型时获取NoMethodError(nil:NilClass的未定义方法`name')

som*_*aha 5 heroku ruby-on-rails-3

我只是推动了Heroku,并尝试通过rails_admin添加模型进行一些测试.当我这样做时,我得到了一个通用错误页面.我进入日志并发现了这条消息:

NoMethodError(nil的未定义方法`name':NilClass)

然后我打开了heroku控制台并尝试手动添加模型并在尝试保存时收到相同的消息.

NoMethodError:nil的未定义方法`name':NilClass

这是模型:

class Board < ActiveRecord::Base
  attr_accessible :name, :description

  validates :name, :presence => true
  validates :description, :presence => true
  validates_uniqueness_of :name, :case_sensitive => false

  has_many :subjects
  scope :hidden, where(:is_hidden => true)
  scope :visible, where(:is_hidden => false)
end
Run Code Online (Sandbox Code Playgroud)

任何想法可能会发生什么 - 或从哪里开始寻找?

我进行了迁移,并且能够看到它在控制台中工作时识别模型及其属性.

谢谢!

Zee*_*han 20

在被这个问题两次咬了之后,我向heroku支持团队询问了它发生的原因.他们回答说:

"在运行rake db:migrate之后,您必须重新启动应用程序,以便它可以获取架构更改,因为架构信息在生产模式下启动时会被缓存."

因此,请始终记住在运行新迁移后通过'heroku restart'重新启动heroku应用程序.


som*_*aha 4

我不确定在推出更改并运行 db:migrate 时 Heroku 是否存在延迟或其他问题,但在外面花了几个小时后,我回来了,再次运行 rake db:migrate,这似乎什么也没做,并且然后我尝试再次创建模型,它运行没有任何问题。

现在一切似乎都很好,但我无法判断我只是需要等待更长的时间才能使用 Heroku 进行测试 - 或者再次运行迁移是否确实做了一些事情。