メンバーにはdeviseを使用しています。tos_agreementフィールド(ブール値)をメンバースキーマに追加し、それをに追加しましたviews/devise/registrations/new.html.haml
。
メンバーモデルには、次のような検証ルールがあります。
validates_acceptance_of :tos_agreement, :allow_nil => false,
:accept => true
正常に動作します。TOSを受け入れないと、登録できません。
ただし、問題は設定の編集にあります。あなたが行くと/members/edit
あなたはあなたの電子メールアドレスまたはパスワードを変更することができるフォームを手に入れます。この時点では変更できないはずなので、TOS契約のフィールドはありません。ただし、変更(パスワードの変更など)を行ってフォームを送信すると、TOS契約が偽であってはならないというエラーメッセージが返されます。
最初の登録後にTOS契約を変更しようとしないようにするにはどうすればよいですか?
編集:基本的な問題は、attr_accessibleに:tos_agreementが含まれていることだと思います。これは、今では非常に悪い考えでした。しかし、それを削除した場合、一括割り当て可能ではない場合でも、パラメーターを受け入れてそれを使用して何かを行うようにDeviseを変更するにはどうすればよいでしょうか。