0

ネストされたモデルフォームについては、このRailsCastに従ってください。

class Survey < ActiveRecord::Base
  has_many :questions, :dependent => :destroy
  accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end

class Question < ActiveRecord::Base
  belongs_to :survey
  has_many :answers, :dependent => :destroy
  accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
  validates_presence_of :content
end

class Answer < ActiveRecord::Base
  belongs_to :question
  validates_presence_of :content
end

これらは、3つのモデルすべてでネストされたフォームを作成するために使用されます。

問題は次のとおりです。新しいアンケートを作成し、アンケートにタイトルを付け、質問の内容を空白のままにして、回答を追加し、[送信]をクリックします。

調査が作成されます。ラムダのため、空白の質問フィールドと空白でない回答フィールドは破棄されます。

回答は存在するが質問は存在しない場合に検証をキャッチして、ユーザーが回答を削除するか質問を提供できるようにするにはどうすればよいですか?

4

1 に答える 1

1

:reject_if1つの方法は、ネストされた属性を指定するときにを削除することです。

または、より柔軟性が必要な場合は、ラムダを更新してより多くのことを実行できます。たとえば、質問と回答の両方が空の場合は拒否します。

githubの改訂されたソースコードも見てください。これは役に立ちます

于 2013-01-22T05:41:43.817 に答える