2010-06-19 15 views

Odpowiedz

15

before_validation_on_create zdarzyć przed walidacji na stworzenie ... ale one same nie są walidacji.

Prawdopodobnie chcesz użyć validate i prywatnej metody, która dodaje do tablicy błędów. tak:

class IceCreamCone 

    validate :ensure_ice_cream_is_not_melted, :before => :create 

    private 
    def ensure_ice_cream_is_not_melted 
     if ice_cream.melted? 
     errors.add(:ice_cream, 'is melted.') 
     end 
    end 
    end 
+1

Szczególnie podoba mi się twój przykład. –

+1

Ten przykład ma mnie chichotać jak mała dziewczynka w biurze – bpromas

+3

Cieszę się, że ci się podoba! Zapomniałem, że napisałem to 5 lat temu. Dla przypomnienia chłopcy też mogą chichotać. –

1

Jest cennym źródłem informacji na temat tutaj callbacków i kolejności ich wydarzyć w: haki

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

+0

Dlaczego zostało to odrzucone? Wskazuje na bardzo jasną dokumentację opisującą rozwiązanie problemu PO oraz lepsze zrozumienie walidacji w ogóle. – JohnMetta

+1

Został wycofany, ponieważ nie jest odpowiedzią, jest tylko linkiem do zewnętrznego źródła. – henrebotha

29

w szynach 3

before_validation_on_create :do_something 

został zastąpiony:

before_validation :do_something, :on => :create 
+0

Nie sądzę, że to rozwiązuje kwestię uruchamiania niestandardowych walidacji przed stworzeniem, ale odpowiada na pytanie, z którym tu przybyłem. – mwfearnley

2

Następujące pracował dla mnie w Rails 5:

validate :custom_validation_method, :on => :create

Bieganie

validate :custom_validation_method, :before => :create

dał mi następujący błąd:

Unknown key: :before. Valid keys are: :on, :if, :unless, :prepend. 
Powiązane problemy