/ / Railsy sprawdzają wszystkie atrybuty w obiekcie - ruby-on-rails, sprawdzanie poprawności

Railsy walidują wszystkie atrybuty w obiekcie - ruby-on-rails, sprawdzanie poprawności

Czy istnieje sposób sprawdzenia prawdziwej obecności wszystkich atrybutów w danym obiekcie modelu? Czy muszę podać listę każdego atrybutu za pomocą presence: true?

Dzięki za pomoc.

Odpowiedzi:

4 dla odpowiedzi № 1

Aby uzyskać tablicę wszystkich atrybutów modelu, możesz użyć YourModel.attribute_names. Jednak nie można naprawdę potwierdzić obecności wszystkich atrybutów (takich jak id, created_at), ponieważ będą one puste podczas walidacji podczas tworzenia rekordu.

class YourModel < ActiveRecord::Base
NON_VALIDATABLE_ATTRS = ["id", "created_at", "updated_at"] #or any other attribute that does not need validation
VALIDATABLE_ATTRS = YourModel.attribute_names.reject{|attr| NON_VALIDATABLE_ATTRS.include?(attr)}

validates_presence_of VALIDATABLE_ATTRS
end

1 dla odpowiedzi nr 2

Możesz uzyskać wszystkie nazwy atrybutów w Array z metodą .attributes_names.

Następnie wszystko, co musisz zrobić, to dodać to array do validates_presence_of metoda.

Przykład:

class Model < ActiveRecord::Base
validates_presence_of attribute_names.reject { |attr| attr =~ /id|created_at|updated_at/i }
end

0 dla odpowiedzi № 3

Tak, możesz dodać wszystkie atrybuty w jednym wierszu w następujący sposób:

validates :name, :login, :email, presence: true