2015-10-02 14 views
8

Widzę problem na Heroku tylko z klejnotem przodków (nie można odtworzyć lokalnie): https://github.com/stefankroes/ancestryTylko Heroku: klejnot przodków wywala z niezdefiniowaną metodą "pochodzenie" dla # <Model: 0x #######>

NoMethodError doszło w domu # przesłania: niezdefiniowana metoda `przodków” dla #

metoda wygląda następująco:

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

ta metoda nie nawet wezwać .ancestry metody - ale wyjątek dzieje się tak szybko, jak model jest tworzony.

modelu wygląda następująco:

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

Oto kłody:

A NoMethodError occurred in home#anthem_upload: 

    undefined method `ancestry' for #<Anthem:0x007f1684d58b98> 
    app/controllers/home_controller.rb:335:in `anthem_upload' 
+0

Czy możesz pokazać pełny ślad błędu w dzienniku Heroku? –

+0

pokazać również metodę 'model_upload' lub samą' anthem_upload'? –

+0

model_upload to anthem_upload - to samo, co powyżej. Dziwne jest to, że wszystko działa dobrze lokalnie, tylko na Heroku eksploduje – etayluz

Odpowiedz

2

należy uruchomić migrację dodać metodę ancestry do modelu:

heroku run rake db:migrate 

Oczywiście zakładając, że twoja aplikacja działa w fazie rozwoju. Jeśli nie można wygenerować migrację z

rails g migration add_ancestry_to_[table] ancestry:string 

zaczerpnięte z ancestry

Zmieniano

Po czytać komentarze, ja staram moja hipoteza. Dodanie ancestry gem do projektu, który nie potrzebuje, a ich dodawanie has_ancestry do modelu Task, bez migracji, przy konsoli dostałem:

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/[email protected]/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/[email protected]/gems/activemodel-4.2.2/lib/active_model/attribute_methods.rb:433:in `method_missing' 

Ten sam błąd masz. Oczywiście jestem w fazie rozwoju. Musisz spróbować czegoś takiego w heroku z: heroku run rails console

+0

Dzięki, ale zrobiłem tę migrację i na heroku również. – etayluz

+0

Czy próbowałeś 'restartu Heroku'. Możesz także wypróbować na konsoli: 'Anthem.first.ancestry' (jeśli zapisałeś dowolny zapis). –

+0

Możesz uruchomić polecenie 'heroku uruchom rake db: migrate: status' i sprawdź, czy wszystkie migracje zostały wykonane poprawnie. –

Powiązane problemy