我在Rails 5项目中使用了Trailblazer 2.1(以及干验证(0.11.1))。
我有两种不同的语言区域设置绑定到用户配置文件。
当我动态更改用户的区域设置时 - 干验证不会注意到它 - 并且继续使用以前的区域设置产生验证错误。
出了什么问题?是这个还是bug还是一个功能?为什么干验证不会响应区域设置变化?如何解决?
这是我的语言环境切换代码:
class ApplicationController < ActionController::Base
before_action :switch_locale
def switch_locale
I18n.locale = current_user.locale
end
end
答案 0 :(得分:0)
我偶然发现了解决方案。这只是Rails.application.configure do
Dry::Validation::Schema.configure do |config|
config.messages = :i18n
end
Dry::Validation::Schema::Form.configure do |config|
config.messages = :i18n
end
end
# https://github.com/dry-rb/dry-validation/issues/368
# Monkey patch MessageCompiler to make the failing example pass:
module PatchMessageCompiler
def default_lookup_options
{ locale: messages.default_locale }
end
end
Dry::Validation::MessageCompiler.prepend PatchMessageCompiler
内的一个错误。我发现并成功应用了解决这个问题的方法:
<强>配置/初始化/ dry_validation.rb 强>:
df_b <- data.frame(date = rep(unique(df$date), length(unique(df$id))),
id = rep(unique(df$id), each = length(unique(df$date))))
balanced_data <- left_join(df_b, df)