在我的User.rb
模型中,我验证了username
和name
的存在
validates_presence_of :username, :name
但是,只有username
字段存在于表单上,而name
是使用before_validation
回调创建的。
def set_username_as_name_if_empty
if self.username && self.username.present?
self.name = self.username if self.name && self.name.empty?
end
end
只要表单上存在name
字段(输入或隐藏无关紧要),此工作就可以了。
我的问题是如何在不必在表单上添加name
字段的情况下实现相同的目标?听起来有点不必要将它添加为隐藏值只是因为需要。
有什么想法吗?
答案 0 :(得分:2)
简化验证方法的方法:
def set_username_as_name_if_empty
if name.blank?
name = username if username.present?
end
end
因为执行以下操作不会引发任何错误:
1.9.3p0 :038 > nil.present?
=> false
我完全不明白你的问题,但如果你的意思是
“我被迫在表单中输入(甚至隐藏)以避免输入 验证失败了?“
我会说不,您不需要此输入,因为您在验证之前设置了name
属性。