Jak mogę wymagać, aby hasło miało minimalną długość podczas używania has_secure_password w Rails 3.1? Starałem się zrobić:has_secure_password: jak wymagać minimalnej długości
class User < ActiveRecord::Base
...
validates :password, presence: { on: create }, length { minimum: 8 }
...
end
ale wtedy walidacja nie powiedzie się z hasłem „za krótki” na aktualizację, gdy hasło nie jest przewidziane w params formularza. W przypadku innych atrybutów długość jest sprawdzana tylko wtedy, gdy podano wartość pola. Czy jest to błąd w implementacji has_secure_password, czy też robię coś nie tak?
Dzięki za podpowiedź. Myślę, że masz na myśli: validates: password, presence: {on: create}, length {minimum: 8, if: password_digest_changed? }. Gdybym zrobił: jeśli na końcu tak jak ty sugerujesz walidacje: obecność może nie być aktywna podczas tworzenia. Nie ma metody password_changed? ponieważ używam has_secure_password - odpowiednią metodą jest password_digest_changed ?. To jest błąd w Railsach 3.1.rc4, prawda? – Peder
Cześć, dobra robota :) Nie sądzę, że to błąd, "hasło" w twoim przypadku wydaje się być atrybutem wirtualnym, a metody takie jak "zmieniono" istnieją tylko dla wierszy bazy danych – apneadiving