微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决显示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 举报,一经查实,本站将立刻删除。