首页 > 解决方案 > Rails 6 gem client_side_validations 应用于上下文不工作的模型

问题描述

我有一个这样的模型:

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

页面在哪里:data_setup

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

有什么办法让它工作吗?

标签: ruby-on-railsrubygemsclient-side-validation

解决方案


你对此的期望是完全错误的。模型不知道请求、控制器或模型之外的任何其他内容,除非您明确将其传入或传入全局变量。

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

使用自定义上下文时,您需要通过将上下文传递给 或 来手动valid?触发invalid?save

Profile.new(username: nil).valid? # true
Profile.new(username: nil).valid?(:data_setup) # false

推荐阅读