gpt4 book ai didi

ruby-on-rails - Rails 3. 如果全部留空则不验证嵌套属性

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:58 29 4
gpt4 key购买 nike

我有一个带有嵌套属性的表单。我正在为一名学生注册学校,该学生可以有很多紧急联系人。

class EmergencyContact < ActiveRecord::Base
attr_accessible :full_name, :relationship, :mobile_phone, :student_id
belongs_to :student

validates :full_name, :presence => true
validates :relationship, :presence => true

end

所以我有一个表格来注册学生,然后是 3 行来输入紧急联系人。类似于下面的(当然这是一个过于简化的版本...

Student Name: _____________

Emergency Contacts
------------------------------------------
| Name | Relationship |
------------------------------------------
| | |
------------------------------------------
| | |
------------------------------------------
| | |
------------------------------------------

如果我只输入 2 个紧急联系人,那么我会收到紧急联系人姓名不能为空的验证错误。 如果该特定紧急联系人的表单中的所有字段均为空白,我如何才能使其不验证?

最佳答案

我假设您已经在 Student 模型中设置了 accepts_nested_attributes。您需要添加一个 :reject_if proc。如果 proc 的计算结果为真,它将忽略该行。

class Student < ActiveRecord::Base 
has_many :emergency_contacts
accepts_nested_attributes_for :emergency_contacts,
:reject_if => lambda { |a| a[:full_name].blank? }
end

您可以将其修改为类似lambda { |a|一个[:名字].空白? && a[:relationship].空白? 等,根据您的需要。

关于ruby-on-rails - Rails 3. 如果全部留空则不验证嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com