我们正在为我们的成员使用设计。我们在成员模式中添加了一个 tos_agreement 字段(布尔值),并将其添加到views/devise/registrations/new.html.haml
.
在 Member 模型中,我们有一个验证规则如下:
validates_acceptance_of :tos_agreement, :allow_nil => false,
:accept => true
它工作正常 - 如果您不接受 TOS,则无法注册。
但是,问题在于编辑您的设置。如果你去/members/edit
你会得到一个表格,你可以在其中更改你的电子邮件地址或密码。TOS 协议没有字段,因为此时不应更改。但是,当您进行更改(例如更改密码)并提交表单时,它会返回一条错误消息,即 TOS 协议不能为假。
我们如何告诉它在第一次注册后永远不要尝试修改 TOS 协议?
编辑:所以我认为根本问题是我们的 attr_accessible 中有 :tos_agreement,现在我想这是一个非常糟糕的主意。但是如果我们删除它,我们如何修改 Devise 以接受参数并使用它做一些事情,即使它不是质量可分配的?