ruby-on-rails - 验证 Rails 中的哈希列

标签 ruby-on-rails

我有一个用户表 (id,name,...) 和一个 user_details 表(id​​,user_id,additional_details,designation)

这里的 additional_details 是一个带有 (:empid,:prjt) 的散列

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

最佳答案

在用户详细信息中使用自定义验证:例如,如果我们要检查 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 对象会报错,这反过来又会使用户对象在您尝试保存时报错。

关于ruby-on-rails - 验证 Rails 中的哈希列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561409/

相关文章:

ruby-on-rails - 如何从 ruby​​ on Rails Controller 中的 f.select 标签获取选定值

ruby-on-rails - rails awesome nested set 显示所有猫、子猫和子子猫

ruby-on-rails - 向 Active Resource 类添加非静态自定义方法的正确方法

ruby-on-rails - 如何在 Devise Invitable 中动态更改 accept_invitation_url 中使用的 URL?

ruby-on-rails - 如何在 Prawn 表中设置字体大小?

mysql - 如何对数百万行运行这个复杂的查询

ruby-on-rails - 删除模型和表,以便可以在 Rails 中重新开始

ruby-on-rails - ActionMailer - 限制收件人数量?

ruby-on-rails - 如何从 Rails 2.3.5 中的模型渲染部分

ruby-on-rails - 保持 rake 作业运行