1

(簡略化された)コードは次のとおりです。

class Biosimilar::AdverseEvent < ActiveRecord::Base

  attr_accessibile :adverse_event_med_conds_attributes

  has_many :adverse_event_med_conds, 
      :class_name => 'Biosimilar::AdverseEventMedCond', 
      :dependent => :destroy
  has_many :med_conds, 
      :class_name => 'Biosimilar::MedCond', 
      :through => :adverse_event_med_conds

  accepts_nested_attributes_for :adverse_event_med_conds,
      :allow_destroy => true,
      :reject_if => proc { |attributes| attributes.any? {|k,v| v.blank?} }
end    

フォームが送信されると、ユーザーが「med_cond_id」フィールドを空のままにしても、「adverse_event_med_conds」テーブルにレコードが作成されます。reject_if が機能しません!

助言がありますか?

4

1 に答える 1

0

わかった、忘れてくれ。上記のコードは正しいです!問題はコントローラーにありました。誤って「show」メソッドに次の行を残しました。

if @adverse_event.adverse_event_med_conds.size == 0
  @adverse_event.adverse_event_med_conds.build
end

...そして、「ビルド」呼び出しがレコード作成を引き起こしたものでした。

于 2013-06-25T14:11:27.807 に答える