より具体的には、「モデルが少なくとも 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 つ未満のプロジェクトになり、無効なプロジェクト オブジェクトになります。
私が理解しているように、これは、タスクを保存しようとするまで、タスク属性が有効かどうかを判断できないためです。また、私の知る限り、タスクはプロジェクトの前に保存できないため、プロジェクトは、タスクが有効かどうかを認識していません。これを仮定するのは正しいですか?
とにかく、私は迅速な答えがあることを望んでいましたが、私が望んでいたよりもはるかに些細なことではないようです. 何か提案があれば、それは大歓迎です。