Ruby on rails Rails自定义模型验证器取决于复选框值

Ruby on rails Rails自定义模型验证器取决于复选框值,ruby-on-rails,validation,checkbox,model,Ruby On Rails,Validation,Checkbox,Model,假设我有一个模型“博客”,标题为:title,正文为:body。 也就是说,在我的视图中,我输入了标题、正文和一个复选框标记,如下所示 <%= check_box_tag "published" %> 现在,我想为:body编写一个自定义验证,该验证仅在选中我的复选框“published”时运行 问题是-如何获取ckeckbox的值,因为:published不是模型属性?您不能。你也不应该 验证确保模型实例上下文中的业务逻辑。不是请求。如果要为验证提供任何其

假设我有一个模型“博客”,标题为:title,正文为:body。 也就是说,在我的视图中,我输入了标题、正文和一个复选框标记,如下所示

<%= check_box_tag "published" %>

现在,我想为:body编写一个自定义验证,该验证仅在选中我的复选框“published”时运行


问题是-如何获取ckeckbox的值,因为:published不是模型属性?

您不能。你也不应该

验证确保模型实例上下文中的业务逻辑。不是请求。如果要为验证提供任何其他上下文,则必须将其传递到模型中,并且在执行验证回调之前,必须将数据保存在某个位置。这并不一定意味着它必须是数据库列

如果您确实希望在控制器中获取参数,可以根据输入的name属性在参数散列中找到它们

params[:published]

好的,谢谢。我在控制器中获得了复选框的值,但如何根据其值添加验证错误?
object.errors.add(:keyname)