reject_if选项被忽略

时间:2013-06-25 11:32:59

标签: ruby-on-rails ruby-on-rails-3.2

这是(简化)代码:

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不起作用!

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,别忘了。上面的代码是正确的!问题出在控制器上,我不小心在“show”方法中留下了以下几行:

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

...并且“构建”调用是导致创建记录的调用。