问题描述
我的问题是 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 (将#修改为@)