私たちはメンバーのためにdeviseを使用しています。メンバーのスキーマにtos_agreementフィールド(boolean)を追加し、views/devise/registrations/new.html.haml
に追加しました。メンバーモデルでTOS合意のチェックボックスをDeviseと一緒に追加
次のように、我々は検証ルールを持っている:
validates_acceptance_of :tos_agreement, :allow_nil => false,
:accept => true
それが正常に動作します - あなたがTOSに同意しない場合は、登録することはできません。
ただし、問題は設定の編集に伴い発生します。 /members/edit
に行くと、電子メールアドレスまたはパスワードを変更できるフォームが表示されます。この時点では変更できないはずなので、TOS合意の分野はありません。ただし、変更(パスワードの変更など)してフォームを送信すると、TOS同意書が偽ではないというエラーメッセージが返されます。
最初の登録後にTOS契約を変更しようとしないようにどのように指示できますか?
編集:だから私は根本的な問題は私たちが持っていたと思う:私たちのattr_accessibleのtos_agreementは非常に悪い考えであった。しかし、それを取り除くと、パラメータを受け入れるようにDeviseを変更し、大量に割り当てることはできないものの、何かをどうやって行うのでしょうか?
あなたはまた、実際にこれらの種類のデータベース内のフィールドを作成する必要はありません。それが唯一のサインアップ時にチェックだように、バリデータにオプションを作成します変数は、あなただけのための仮想フィールドを作成します。 http://guides.rubyonrails.org/active_record_validations.html#acceptance –