Mikeroz
December 23, 2014, 11:05am
1
Cześć,
w trakcie przerabiania 11 rozdziału tutriala Hartl’a natknąłem się na następujący problem (wystąpił on po dodaniu walidacji obrazów):
SystemStackError in MicropostsController#create
stack level too deep
Extracted source (around line #79):
77
78
79
80
81
82
rescue Exception
cleanup!
raise
end
def prepare! #:nodoc:
Kod aplikacji znajduje się na githubie.
Lypa
December 23, 2014, 11:20am
3
Ok już wiem. Nazwałeś metodę walidatora picture_size
, a w metodzie picture_size
robisz co? Wołasz picture_size
. Nieskończona pętla. Zmień nazwę walidatora, np. na validate_picture_size
i będzie banglać.
Mikeroz
December 23, 2014, 11:55am
4
Dziękuję
sprawdzę za chwilę.
Wesołych świąt Lypa!
Mikeroz
December 23, 2014, 1:20pm
5
Got it. Błąd był dokładnie tutaj:
def picture_size
if picture.size > 5.megabytes
errors.add(:picture, "should be less than 5MB")
end
end
Problem wynikał stąd, że wcześniej w if’ie miałem picture_size, a nie picture.size
Skoro czytasz tutorial to pewnie Ci się przyda. Lepiej napisać to tak:
def picture_size
errors.add(:picture, :error_name) if picture.size > 5.megabytes
end
‘:error_name’ - definiujesz w active_recordach ścieżkę znajdziesz w Google.
1 Like
Mikeroz
December 23, 2014, 7:52pm
7
Jest jakiś powód dlaczego napisać Twoim sposobem? Przejrzałem informacje w guides’ach RoR dot. walidacji (i błędów) oraz ActiveModel::Errors i oba wskazują na poprawność pierwszego rozwiązania.
A ścież ki do definiowania nie mogę znaleźć Google jest na mnie zły…
Twój zapis jest jak najbardziej w porządku, po prostu pokazałem jak można zrobić to lepiej.
W sumie to jeszcze lepiej by było tak, ponieważ error dotyczy parametru size.
def picture_size
errors.add(:size, :error_name) if picture.size > 5.megabytes
end
https://gist.github.com/dareddov/ad6d896554efd646a172 tu masz Gista z kluczem do translacji.
1 Like
Mikeroz
December 24, 2014, 5:33am
9
Senkju Wesołych świąt @Dareddov !