验证模型字段:如果值等于哈希中的键
在初始化程序中,我有一个巨大的 COUNTRY_CODES 哈希值,其格式为:
{ :us => "United States, :de => "Germany" }
在我的模型中,我想验证输入的值是否为:
- 呈现
- 我的国家/地区代码哈希值的键
我该如何解决这个问题?
我无法使用:
validates :country, :presence => true,
:inclusion => { :in => COUNTRY_CODES }
我尝试过自定义验证器,但是当值为 nil 时,例如当我尝试使用 value.to_sym 时,我会收到方法错误,导致我验证验证器并且它变得混乱。
试图找出最干燥、最有效的方法来做到这一点。
In an initializer I have a huge COUNTRY_CODES hash, with format:
{ :us => "United States, :de => "Germany" }
In my model I want to validate that the entered value is:
- present
- a key of my country code hash
How do I apporach this?
I can't use:
validates :country, :presence => true,
:inclusion => { :in => COUNTRY_CODES }
I've tried custom validators, but I get method errors when the value is nil, e.g. when I try to use value.to_sym, causing me to validate the validator and it becomes messy.
Trying to figure out the most DRY and efficient way of doing this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要将 COUNTRY_CODES 键(符号)收集为字符串并验证是否包含。所以使用:
You need to collect COUNTRY_CODES keys(symbols) as strings and validate for the inclusion. So use:
如果您只想检查哈希中的键,请尝试
COUNTRY_CODES.keys
。Try
COUNTRY_CODES.keys
if you only want to check with the keys in the hash.这个怎么样?
Hows this?