Моего приложения использует обычные классы Ruby, с ActiveModel::Validations
, без реализации ActiveRecord
:валидирующего хеш модели с ActiveModel :: Validations
class Car
include ::ActiveModel::Validations
attr_accessor :engine
end
class Engine
include ::ActiveModel::Validations
attr_accessor :cylinders
validates_presence_of :cylinders
end
Я хотел бы Car
проверить вложенные атрибуты, которые имеют ActiveModel::Validations
, в этом случае engine
.
car = Car.new
car.engine = Engine.new
car.engine.valid? # => false
car.valid? # => true
# It should return 'false',
# because 'engine.cylinders' is 'nil'
Что такое самый простой способ получить это поведение?
Я думал, что, возможно, я хотел, чтобы гнездиться ошибки из 'engine' в 'ошибки автомобиля, но кажется, что большинство людей думает, что это анти-шаблон. Это кажется достаточным для основного случая, с которым я работаю. –