ruby-on-rails - 验证模型字段 : if value equals a key in a hash

标签 ruby-on-rails validation constants

在初始化程序中,我有一个巨大的 国家代码 哈希,格式为:

{ :us => "United States, :de => "Germany" }

在我的模型中,我想验证输入的值是:
  • 礼物
  • 我的国家代码哈希的键

  • 我该如何解决这个问题?

    我不能使用:
    validates :country, :presence => true,
                        :inclusion => { :in => COUNTRY_CODES }
    

    我尝试过自定义验证器,但是当值为 nil 时出现方法错误,例如当我尝试使用 value.to_sym 时,导致我验证验证器并且它变得困惑。

    试图找出最干燥和最有效的方法。

    最佳答案

    您需要收集 COUNTRY_CODES 键(符号)作为字符串并验证是否包含。所以使用:

    validates :country, :presence => true,:inclusion => { :in => COUNTRY_CODES.keys.map(&:to_s) }
    

    关于ruby-on-rails - 验证模型字段 : if value equals a key in a hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483583/

    相关文章:

    mysql - 修改 Ruby on Rails 安装上的 MySQL 数据库

    validation - IE10兼容模式输入类型=email/url/number

    javascript - 如何获取 <input type ="number"> 字段的原始值?

    c++ - const 文字与 const 函数作为右值?

    sql - 如何选择充满常量的多行?

    ruby-on-rails - 如果 Rails 中的属性发生更改,则验证更新

    ruby-on-rails - 如何访问模型子项的不同父项

    ruby-on-rails - 分区数据库表的 Rails 迁移索引名称太长

    java - 我如何在 vaadin 中检查输入的文本字段值是否为数字或字母?

    c++ - 通过重新使用的非 `const` 名称修改动态分配的 -`const` 对象是否合法?