Я хотел бы написать собственный валидатор для данного вызова валидации:
class Worker
include ActiveModel::Validations
def initialize(graph_object)
@graph_object = graph_object
end
attr_accessor :graph_object
validates :graph_object, graph_object_type: {inclusion: [:ready, :active]}
end
class GraphObject
attr_accessor :state
end
Я хотел бы проверить Worker#graph_object
на основе GraphObject#state
. Таким образом, Worker
действителен, когда переданный в GrapObject
находится в состоянии : готов или : активен. Я хотел бы использовать как можно больше ActiveModel.
Документация по валидации описывает процесс настройки пользовательского валидатора, но я не могу понять, как это сделать.
Думаю, мне нужно начать с этого:
class GraphObjectTypeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
end
end
- параметры [: включение] = [: готово,: активно]
- запись - это экземпляр Worker (я думаю ...)
- значение Понятия не имею (
value = record.graph_object
?) - атрибут то же, что и для значения - понятия не имею
Может быть, validates :graph_object, graph_object_type: {inclusion: [:ready, :active]}
неправильно определен?