gpt4 book ai didi

ruby-on-rails - 验证包含在可用语言环境中

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:42 24 4
gpt4 key购买 nike

我的 Company 模式中有一个数据库字段,它指定了公司的区域设置。我想验证它的值是否包含在 I18n 的可用语言环境中,我发现 Rails 的包含验证适合这项任务。

但是当我使用

class Company < ActiveRecord::Base
validates :locale, inclusion: { in: I18n.available_locales.map { |l| l.to_s } }
end

(调用map是因为I18n.available_locales返回的是符号数组,不是字符串,所以我们需要在这里进行转换)

当我从 Rails 控制台调用 I18n.available_locales 时可用的区域设置 de 无效。我该怎么办?

最佳答案

这里的问题是 I18n.available_locales 在加载 Company 类时被计算一次。显然,当时并非所有语言环境都可用。您需要做的是动态调用 available_locales,您可以使用 proc 来完成:

validates :locale, inclusion: { in: proc { I18n.available_locales.map { |l| l.to_s } }

这将在运行时进行评估,并且您的所有语言环境都将可用。

关于ruby-on-rails - 验证包含在可用语言环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23541034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com