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

时间:2011-09-10 16:27:31

标签: ruby-on-rails-3 heroku

我刚刚推动了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

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

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

谢谢!

2 个答案:

答案 0 :(得分:20)

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

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

所以请记住在运行新的迁移后,通过'heroku restart'重新启动heroku app。

答案 1 :(得分:4)

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

所以现在一切似乎都很好,但我不能说我需要等待更久才能使用Heroku进行测试 - 或者是否再次运行迁移实际上做了些什么。