rails中哈希列的验证

时间:2010-12-30 09:21:57

标签: ruby-on-rails

我有一个Users表(id,name,...)  和user_details表(id,user_id,additional_details,指定)

这个additional_details是一个带有(:empid,:prjt)

的哈希

我正在尝试为additional_details [:empid]和指定列添加验证。怎么做??

1 个答案:

答案 0 :(得分:7)

在用户详细信息中进行自定义验证:例如,如果我们要检查empid是否为空白:

#in UserDetail
validate :additional_details_is_valid

def additional_details_is_valid
  if !self.additional_details.is_a?(Hash) || self.additional_details[:empid].blank?
    self.errors.add(:additional_details, "Empid is blank")
  end
end

现在,我们只需要让User对象检查其关联的user_detail对象是否有效。

#in User
validates_associated :user_detail

现在,如果没有设置empid,UserDetail对象会抱怨,这反过来会让用户对象在你尝试保存时抱怨。