我刚刚推动了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
任何想法可能会发生什么 - 或从哪里开始寻找?
我进行了迁移,并且能够看到它在控制台中工作时识别出模型及其属性。
谢谢!
答案 0 :(得分:20)
在被这个问题两次咬了之后,我向heroku支持团队询问了它发生的原因。他们回答说:
“运行rake db:migrate之后,您必须重新启动应用程序,以便它可以获取架构更改,因为在生产模式下启动时会缓存架构信息。”
所以请记住在运行新的迁移后,通过'heroku restart'重新启动heroku app。
答案 1 :(得分:4)
我不确定在推出更改并运行db:migrate时是否存在延迟或与Heroku的某些事情但是在花了几个小时后,我回来后,再次运行rake db:migrate,这似乎什么都不做,然后我再次尝试创建模型,它没有任何问题。
所以现在一切似乎都很好,但我不能说我需要等待更久才能使用Heroku进行测试 - 或者是否再次运行迁移实际上做了些什么。