1

私はいくつかの異なるモデルにaccepts_nested_attributes_forを使用してきましたが、奇妙な状況に陥っています。

最上位のモデルで空白の作成をスキップでき、最下位のモデルで個々のレコードの validate_presence を実行できますが、一連のレコードに対して最も複雑な検証を行うことは可能ですか?

部屋と料金のモデルがあります。客室には has_many Rates があり、accepts_nested_attributes_for Rates.

空白を取り除くことができます

accepts_nested_attributes_for :room_rates, :reject_if => lambda { |a| a[:price].blank? }

しかし、各部屋には7つの異なるレコード(レート)があります..常に7つで、同じフォームから一度に送信されます。現在、彼らが 1 日だけ入力する場合は許可されます。ただし、7 つすべてが存在する必要があることを検証したいと思います。7 つすべてを入力して受け入れるか、1 つまたは 2 つだけを入力するとエラーが発生します。また、7 つすべてを完全に空白のままにしておくと、何もしません。

nested_attirbutes についてはまだこのようなものを見たことがないので、それが可能かどうか疑問に思っています。

4

1 に答える 1

1

これが機能するかどうかはわかりませんが、次のような Room クラスの料金のサイズを確認できませんか?

class Room < ActiveRecord::Base
  validate :all_rates_present

...

private
def all_rates_present
  unless rates.size == 7
    errors.add(:rates, "must all be filled in.")
  end
end
于 2010-02-24T15:06:03.747 に答える