这是(简化)代码:
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”字段EMPTY,也会在“adverse_event_med_conds”表上创建记录。 reject_if不起作用!
有什么建议吗?
答案 0 :(得分:0)
好的,别忘了。上面的代码是正确的!问题出在控制器上,我不小心在“show”方法中留下了以下几行:
if @adverse_event.adverse_event_med_conds.size == 0
@adverse_event.adverse_event_med_conds.build
end
...并且“构建”调用是导致创建记录的调用。