Rails 6 gem client_side_validations 应用于上下文不起作用的模型

Rails 6 gem client_side_validations applied to a model with context not working

我有这样一个模型:

class Profile < ApplicationRecord
  validates :username, presence: true, on: :data_setup
end

其中 :data_setup 是一个页面。

安装客户端验证后gem,它不会工作,除非我删除上下文部分on: :data_setup

有什么办法让它起作用吗?

您对此的期望完全错误。模型不知道请求、控制器或任何其他真正在模型之外的东西,除非你明确地传入它或者它是一个全局的。

用于验证 on: 最常用于将验证限制在 createupdate 上下文中。请注意,这与您所在的“页面”无关 - 上下文仅与模型实例是否为新记录有关。

使用自定义上下文时,您需要通过将上下文传递给 valid?invalid?save:

来手动触发它
Profile.new(username: nil).valid? # true
Profile.new(username: nil).valid?(:data_setup) # false