2014-04-13 11 views
8

Kiedy próbuję u = User.new, a następnie u.save, metoda before_save nie jest uruchamiana.Dlaczego `before_save` nie działa w Railsach 4?

Oto mój User model:

class User < ActiveRecord::Base 
    attr_accessor :password 
    before_save :encrypt_password 

    def encrypt_password 
    puts "Its getting called" 
    end 
end 

https://railsforum.com/topic/1741-rails-4-and-before-save-method/

+0

Jeśli tylko testowanie jest zwolniony, należy użyć 'Rails.logger.debug'. Zwykle to powinno działać. – nathanvda

+0

@nathanvda: gdzie jest plik dziennika do obejrzenia? – Shane

+0

Czy to podchwytliwe pytanie? W twoim folderze rails powinien znajdować się folder 'log', który powinien zawierać plik' development.log' (jeśli pracujesz w trybie programowania). – nathanvda

Odpowiedz

14

metody wywołania zwrotnego muszą być protected lub private.

stąd: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html sekcji Types of callbacks

+1

"Hello" nadal nie drukuje niczego na konsole szyn. Dowolna konkretna metoda drukowania w konsoli. – Shane

+0

Nie będzie drukować na konsoli; pojawi się na powłoce, na której uruchamiasz swój serwer. Lub jeśli twój serwer działa przez coś takiego jak apache lub nginx, powinien znajdować się w odpowiednim pliku dziennika. –

+0

@Shane try logger.info lub Rails :: logger.info do debugowania –

Powiązane problemy