加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Devise添加TOS协议复选框

发布时间:2020-12-16 19:25:23 所属栏目:百科 来源:网络整理
导读:我们正在为我们的会员使用设计.我们在成员模式中添加了一个tos_agreement字段(boolean),并将它添加到views / devise / registrations / new.html.haml中. 在Member模型中,我们有一个验证规则如下: validates_acceptance_of :tos_agreement,:allow_nil = fal
我们正在为我们的会员使用设计.我们在成员模式中添加了一个tos_agreement字段(boolean),并将它添加到views / devise / registrations / new.html.haml中.

在Member模型中,我们有一个验证规则如下:

validates_acceptance_of :tos_agreement,:allow_nil => false,:accept => true

它工作正常 – 如果你不接受服务条款,你不能注册.

但是,编辑设置时会出现问题.如果您转到/ members / edit,您将获得可以更改电子邮件地址或密码的表单. TOS协议没有字段,因为此时不应更改.但是,当您进行更改(例如更改密码)并提交表单时,它会返回错误消息,表明TOS协议不能为false.

我们如何告诉它在首次注册后永远不会尝试修改TOS协议?

编辑:所以我认为根本问题是我们在attr_accessible中有:tos_agreement,这是一个非常糟糕的想法,现在我想起来了.但是如果我们删除它,我们如何修改Devise以接受参数并对其执行某些操作,即使它不是可批量分配的?

解决方法

您可以传递:on => :为验证器创建选项,以便仅在注册时检查:
validates_acceptance_of :tos_agreement,:accept => true,:on => :create

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读