Чтобы быть более точным, «Как проверить, что для модели требуется создать хотя бы x действительных связанных моделей?» . Я пытался проверить вложенные модели, которые создаются в той же форме, что и родительский (и в конечном итоге показывают немедленные проверки в виде jQuery). В качестве популярного примера рассмотрим следующие модели и схемы.
class Project
include DataMapper::Resource
property :id, Serial
property :title, String, :nullable => false
has 2..n, :tasks
end
class Task
include DataMapper::Resource
property :id, Serial
property :project_id, Integer, :key => true
property :title, String, :nullable => false
belongs_to :project
end
Все проверки выполняются в определениях схемы, как вы можете видеть. Важным здесь является "has 2..n, :tasks
". Эта проверка на самом деле работает нормально, учитывая, что вложенные атрибуты задач в хэше params приведут к допустимым задачам. Однако, если они создают задачу неверное , то задача не будет создана, и в результате вы получите проект, содержащий менее 2 задач, и, таким образом, проект неверный объект.
Насколько я понимаю, это потому, что он не может выяснить, действительны ли атрибуты задачи, пока не попытается сохранить задачи, и поскольку - , насколько я знаю - задачи не может быть сохранен перед проектом, проект не знает, будут ли задачи правильными или нет. Правильно ли я предположил это?
Во всяком случае, я надеялся, что будет быстрый ответ, но он кажется намного менее тривиальным, чем я надеялся. Если у вас есть какие-либо предложения, это будет с благодарностью.