0

我的问题是如何避免在嵌套的 rails 表单上保存空记录的边缘情况。我有一个简单has_many的 ,用户最多可以有 5 个职位。

# user.rb
has_many :job_titles
validates_length_of :job_titles, maximum: 5
accepts_nested_attributes_for :job_titles, 
  allow_destroy: true,
  :reject_if => proc { |att| att[:name].blank? }

# job_titles.rb
belongs_to :user
validates_associated :user

proc 应该删除所有空白,但无论如何都会创建它们(!),因为我在 users_controller 中有这个,用于确保视图中始终显示 5 个表单字段:

# users_controller.rb
num_job_titles = @user.job_titles.count 
(5-num_job_titles).times { @user.job_titles.build }

有了这个,即使在提交表单之前,空白仍然出现在数据库中,因为之前的代码build是那些空白记录,并且模型验证似乎出于某种原因允许它 - 我没想到会这样。

问题

如何确保为 5 个不同的关联记录(职位)显示 5 个字段,确保空白职位不作为记录保存到数据库中?

4

0 回答 0