在初始化程序中,我有一个巨大的 COUNTRY_CODES 哈希,格式为:
{ :us => "United States, :de => "Germany" }
在我的模型中,我想验证输入的值是:
我如何评价这个?
我无法使用:
validates :country, :presence => true,
:inclusion => { :in => COUNTRY_CODES }
我尝试过自定义验证器,但是当值为nil时,我会遇到方法错误,例如当我尝试使用value.to_sym时,导致我验证验证器并且它变得混乱。
试图找出干预最有效的方法。
答案 0 :(得分:14)
您需要将COUNTRY_CODES键(符号)收集为字符串并验证是否包含。所以使用:
validates :country, :presence => true,:inclusion => { :in => COUNTRY_CODES.keys.map(&:to_s) }
答案 1 :(得分:4)
如果您只想查看哈希中的密钥,请尝试COUNTRY_CODES.keys
。
答案 2 :(得分:1)
怎么样?
validates :country, :presence => true,
:inclusion => { :in => COUNTRY_CODES.keys.map{|c| c.to_s}