0

一度に多数のユーザーを投稿しようとしているRails3アプリケーションがあります。PostmanRESTクライアントを介して投稿しようとしています。一度に1人のユーザーを投稿しようとするとうまくいきますが、一度に複数のユーザーを投稿することはできません。

これは私のユーザーモデルです:

class User < ActiveRecord::Base
  attr_accessible :name,age,email,mobile,gender
end

そして私のユーザーコントローラー:

respond_to :html , :json

def create
  @user = User.new(params[:user])
  if @user.save
    render :json => { :status => :ok, :message => "User Created Successfully"}.to_json
  end
end

複数のユーザーのJSON形式でデータを投稿するユーザー:

{
  user:[
    {
      "name":"abc",
      "age": 23,
      "email": "abc@gmail.com",
      "mobile": 9876543210,
      "gender":"M"
    },
    {
      "name":"def",
      "age": 26,
      "email": "def@gmail.com",
      "mobile": 9876543210,
      "gender":"F"
    }
  ]
}

Railsでこれを行うことは可能ですか?

私は試した:

def create
  @userlist = User.new(params[:user])
  @userlist.each do |u|
    u.save
  end
  render :json => { :status => :ok, :message => "User Created Successfully"}.to_json
end

ただし、データは保存されません。

解決策はありますか?

ユーザーの下に保存されているネストされた属性:

{
    "users" :[
    {
        "name":"abc",
            "age": 23,
            "email": "abc@gmail.com",
            "mobile": 9876543210,
            "gender":"M",
            "projects":
                [
                {
                    "projectname":"abc",
                    "type":"abc"
                },
                {
                    "projectname":"def",
                    "type":"abc"
                },
                {
                    "projectname":"ghi",
                    "type":"abc"
                }
        ]
    },
    {
        "name":"def",
        "age": 26,
        "email": "def@gmail.com",
        "mobile": 9876543210,
        "gender":"F",
        "projects":
            [
            {
                "projectname":"abc",
                "type":"abc"
            },
            {
                "projectname":"def",
                "type":"abc"
            },
            {
                "projectname":"ghi",
                "type":"abc"
            }
        ]
    }
    ]
}
4

2 に答える 2

2

ここに見られるように、この宝石を使用して、(一度に渡される可能性のあるユーザーの数に応じて)一括挿入することをお勧めします:

def create
    users = []
    @userlist = params[:users]

    @userlist.each do |u|
       user = User.new(u)
       users << user
    end

    User.import(users)

    render :json => { :status => :ok, :message => "User(s) Created Successfully"}
end
于 2013-01-19T18:09:04.537 に答える
0

わかりました。投稿されたパラメータの編集が表示されます。したがって、次のようにコントローラで実行します。

def create
    @userlist = params[:users]
    @userlist.each do |u|
       user = User.new(u)
       user.save!
    end
    render :json => { :status => :ok, :message => "User Created Successfully"}.to_json
end
于 2013-01-19T17:44:01.467 に答える