2017-04-09 22 views
1

私はAPIサーバーとしてRailsを使用しています。なぜサーバーに送信されるデータをネストする必要があるのでしょうか。これは、定義のparamsの好ましい方法であるように思わ:なぜPOSTデータをネストする必要がありますか?

def user_params 
    params.require(:user).permit(:first_name, :last_name, :password, :username, :email) 
end 

そして、これは、作成した経路に送信され、対応するJSONのようになります。

{ 
    "user": { 
     "username": "lorem", 
     "first_name": "ipsum", 
     "last_name": "dolor", 
     "password": "sit", 
     "email": "amet" 
    } 
} 

なぜこれがデータを投稿する好ましい方法でありますか?なぜJSONはなりませんでした:

{ 
    "username": "lorem", 
    "first_name": "ipsum", 
    "last_name": "dolor", 
    "password": "sit", 
    "email": "amet" 
} 
+0

ここではRoRの経験はありませんが、これは実際には他のフィールドを含むパラメータ 'user'を必要としているようです。 – Mario

+0

はい!しかし、これがどのようにレールがコントローラを足場にして始めるのか。私は自動生成されたコードでこれを行う何らかの理由があるはずであり、その理由を知りたいと思います。 – theva

答えて

5

これらはあなたのためのリソースを作成しているときに送信されたパラメータのみではなく、他の人は、次のとおりと値

  • authenticity_token

    1. utf8ランダム文字列
    2. commit値がSaveまたはUpdate

    ロジックは非常に明白です.Railsはすべてのユーザ所属パラメータをuserキーの中にグループ化しているため、読みやすく、コードの解釈が容易で、関連するパラメータを簡単にホワイトリストに登録できます。

    これだけではなく、1つのリクエストで複数のリソースを作成しようとすると、ユーザがたくさんの本を持っているように、ユーザーを作成すると同時に、Nested Resourcesと呼ばれる書籍その場合、次のようになります:

    { 
        "user": 
        { 
        "username": "john_don", 
        "books": 
        { 
         "0": 
         { 
         "author_id": 1 
         } 
        } 
        } 
    } 
    

    私はあなたがそのアイデアを得ることを望みます。

  • 関連する問題