Ho un validatore molto generico e voglio passarlo argomenti.Rails/ActiveModel che passa gli argomenti a EachValidator
Ecco un esempio modello:
class User
include Mongoid::Document
field :order_type
has_many :orders, inverse_of :user
validates: orders, generic: true #i want to pass argument (order_type)
field :task_type
has_many :tasks, inverse_of :user
validates: tasks, generic: true #i want to pass argument (task_type)
end
e Esempio validatore:
class GenericValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
if some_validation?(object)
object.errors[attribute] << (options[:message] || "is not formatted properly")
end
end
end
C'è un modo per passare argomenti al validatore dipende da quale campo si sta convalidando?
grazie
Cosa stai cercando di ottenere in questo modo? Questo non mi sembra il modo migliore per farlo data l'API Rails. – dpassage
Nel mio codice originale voglio scoprire se c'è una dipendenza ciclica nel mio modello. ModelA ha molti modelli B. Il modello B ha un modello A. Voglio convalidare che non esiste un ciclo dal modello A a se stesso. Il fatto è che ho due relazioni diverse che devono convalidare i cicli e c'è una differenza minima tra il validatore. Volevo vedere se potevo farlo passare genericamente quali campi cercare i cicli invece di riscrivere la stessa logica del ciclo e validatore. – GTDev
Penso che potrebbe essere meglio usare la sottoclasse per quella invece della parametrizzazione. – dpassage