Ich habe eine sehr generische Validator und ich möchte Argumente übergeben. HierRails/ActiveModel Übergabe von Argumenten an EachValidator
ist ein Beispiel Modell:
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
und Beispiel-Validator:
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
Gibt es eine Möglichkeit Argumente an den Validator abhängig von zu übergeben, welches Feld er die Validierung ist?
dank
Was versuchen Sie, indem Sie dies zu erreichen? Dies erscheint mir nicht als der beste Weg, dies angesichts der Rails API zu tun. – dpassage
In meinem ursprünglichen Code möchte ich herausfinden, ob es in meinem Modell eine zyklische Abhängigkeit gibt. Modell A hat viele Modell B. Modell B hat ein Modell A. Ich möchte bestätigen, dass es keinen Zyklus von Modell A zurück zu sich selbst gibt. Die Sache ist, ich habe zwei verschiedene Beziehungen, die Zyklen validieren müssen, und es gibt einen minimalen Unterschied im Validator zwischen ihnen. Ich wollte sehen, ob ich es generisch passieren lassen könnte, welche Felder nach Zyklen suchen, anstatt die gleiche Zykluslogik und den gleichen Validator zu schreiben. – GTDev
Ich denke, dass Sie besser dafür Unterklassen anstelle der Parametrisierung verwenden können. – dpassage