いくつかの複雑な関連付けで2つのオブジェクトの検証に問題があります。ここで私が持っているものの例です:関連付けられたオブジェクト間のバリデーションを処理する方法は?
- 数:
car.rb
class Car has_many :passengers end
passenger.rbは私がする必要がある検証
class Passenger belongs_to :car belongs_to :info end
が制限されています
- 乗客には、 "Employer"を文字列として持つ
Info
というオブジェクトへの関連があります。乗客はすべて同じ雇用主でなければなりません。
インターフェイスには、乗客を選択するための複数選択ボックスがあります。乗客の選択が完了したら、「作成」(または「更新」、それ自体の問題があります)をクリックします。
コントローラーがCar
を作成しようとすると、車の検証を実行する必要があります。その後、乗客の検証が通過する必要があります(雇用者のチェック)。そして、乗客が乗客数を超えないようにする必要もあります。これらのいずれかが失敗した場合、リセットして新しいページに戻す必要があります。
更新中に失敗した場合、元の乗客を車に戻す必要があります。私はどのように実際にデータベースにオブジェクトを保存せずに検証を実行するか分からない。さらに、オブジェクトがデータベースに保存されると、検証が失敗した場合、以前の乗客の復元方法はわかりません。
関連付けられたオブジェクトをデータベースに保存する前に、どのように検証できますか?
に乗客の制限を検証します。私はカスタム検証を使用することができましたが、 'allow_destroy'オプションと共に' accepts_nested_attributes_for'を使用することになりました。 – ardavis