2016-12-07 6 views
0

私はイオン(角度の)アプリが消費するAPIを作るレールアプリを持っています。私のユーザーはサインアップする前に、サインアップする前に利用規約に同意し、私のコントローラーの私のパラメータにそれを設定してもらうようユーザーに依頼します。rails json - 受け入れの有効性を確認する

は、モデル側は次のようになります。

# agreeing to terms of service 
    validates_acceptance_of :terms_of_service, on: :create 

コントローラは次のようになります。

def mobile_user_params 
    allowed = [:first_name, :last_name, :email, :password, :password_confirmation, :location, :terms_of_service] 
    params.require(:user).permit(allowed) 
end 

とのparamsでの最終的な結果は次のようになります。

{"user"=>{"terms_of_service"=>true}, "controller"=>"users", "action"=>"mobile_create", "format"=>"json"} 

何私の問題は、それが受け入れるので、{"terms_of_service"=>true}を返していても、これはあるエラーメッセージ:

errors: {"Terms of Service must be accepted"}

は、誰もが、私はこの検証を満たすことができる方法を知っていますか?チェックボックスを使用してHTMLをレンダリングするときに機能しますが、JSONリクエストではそれを満たすことができません。

助けを借りていただければ幸いです。

答えて

0

docを見ましたか?

:によると

受け入れは - 受け入れられたと考えられている値を指定します。デフォルト値は文字列 "1"で、HTMLチェックボックスに簡単に関連付けることができます。検証の前に属性が "1"からtrueにタイプキャストされているため、データベース列を検証する場合はtrueに設定する必要があります。

私は、あなたが追加する必要があることだと思う:validates_acceptance_of :terms_of_service, accept: true

関連する問題