干验证:动态更改区域设置?

时间:2018-02-16 13:06:33

标签: ruby-on-rails validation trailblazer

我在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

1 个答案:

答案 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)