显示has_many关联的字段数时,如何避免在accepts_nested_attributes_for中保存nil/blank? 问题

问题描述

我的问题是 how to avoid saving empty records on a nested rails form 的边缘情况。我有一个简单的 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 个字段,确保空白职位不会作为记录保存到数据库中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)