ruby-on-rails – 仅限Heroku:祖先崩溃与未定义的方法’祖先’为#

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 仅限Heroku:祖先崩溃与未定义的方法’祖先’为#前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Heroku上看到的问题只有祖先的宝石(不能在本地重现):
https://github.com/stefankroes/ancestry

home#upload中出现NoMethodError:
#的未定义方法`ancestry’

方法如下所示:

def anthem_upload
    user = User.find_by(id: params[:user_id])
    anthem = Anthem.create!(user_id: user.id,body:params[:post]) <-- HAPPENS HERE
   ...
ene

方法甚至不会调用.ancestry方法 – 但只要模型创建就会发生异常.

模型看起来像这样:

class Anthem < ActiveRecord::Base
  has_ancestry
 ...
end

这是日志:

06002

解决方法

您必须运行迁移才能将方法祖先添加到模型中:
heroku run rake db:migrate

当然假设您的应用程序在开发中工作.如果没有,您可以使用生成迁移

rails g migration add_ancestry_to_[table] ancestry:string

取自ancestry

编辑

看完你的评论后,我确实尝试了我的假设.将ancestry gem添加到不需要的项目中,并在我得到的控制台上将has_ancestry添加到模型Task而不进行迁移:

Loading development environment (Rails 4.2.2)
~/ (development) > Task.new
=> #<Task:0x00000008a3d088> {
               :id => nil,:project_id => nil,:name => nil,:description => nil,:points_budget => nil,:created_at => nil,:updated_at => nil
}
~/ (development) > Task.new.save
   (0.2ms)  BEGIN
   (0.2ms)  ROLLBACK
NoMethodError: undefined method `ancestry' for #<Task:0x00000008a9c998>
from /home/alejandro/.rvm/gems/ruby-2.2.2@rails4/gems/activemodel-4.2.2/lib/active_model/attribute_methods.rb:433:in `method_missing'
~/ (development) > Task.new.validate
NoMethodError: undefined method `ancestry' for #<Task:0x00000008ad1210>
from /home/alejandro/.rvm/gems/ruby-2.2.2@rails4/gems/activemodel-4.2.2/lib/active_model/attribute_methods.rb:433:in `method_missing'

你得到了同样的错误.当然,我正在发展中.你必须在heroku上尝试这样的东西:heroku run rails console

猜你在找的Ruby相关文章