在Rails 4.1中,validates_inclusion_of不再一样吗?
以下代码确保time_zone
选择在ActiveSupport::TimeZone.us_zones
的时区内:
validates_inclusion_of :time_zone, in: ActiveSupport::TimeZone.zones_map(&:name)
在Rails 4.0中工作得很好。 刚升级到Rails 4.1,我在索引页面上收到此错误(所以只需查看模型):
#include方法的对象? 或者需要proc,lambda或symbol,并且必须作为配置哈希的in(或:within)选项提供
我猜测, ActiveSupport::TimeZone.zones_map(&:name)
不再是in
属性的有效值?
尝试添加.keys
?
validates :time_zone, inclusion: { in: ActiveSupport::TimeZone.zones_map.keys }
在Rails 5中 , ActiveSupport::TimeZone.zones_map
是一个私有方法。 因此,如果您希望validation有效,我建议使用以下语法:
validates :time_zone, inclusion: { in: ActiveSupport::TimeZone.all.map(&:name) }
如果您想继续使用validates_inclusion_of
这也有效:
validates_inclusion_of :time_zone, :in => ActiveSupport::TimeZone.zones_map(&:name).keys, :message => "is not a valid time zone"
- 如何在Rails的开发模式下自动为每个请求重新加载gem代码?
- 匿名模块可以用于什么目的?
- 测试使用ActiveRecord的问题/模块
- 如何将TZInfo标识符转换为Rails TimeZone名称/密钥
- 未初始化的常量TZInfo :: InvalidTimezoneIdentifier(NameError) – Rails 4
- 访问ActiveSupport :: LogSubscriber子类中的Rails请求
- 我需要做什么才能让Hash.from_xml()工作?
- Warbler不包括ActiveSupport语言环境文件
- NoMethodError:ActiveSupport的未定义方法`halt_callback_chains_on_return_false =’:模块