2014-10-01 72 views
0

我目前有幾個模型,如User,UserMovieList和UserMovieListItem。如何在Rails POST CREATE控制器中一次創建多個記錄?

例如,用戶可以創建他們喜歡的喜劇電影或喜愛的恐怖片的列表。創建新列表後,讓我們說'我最喜歡的恐怖片',然後他們可以將條目添加到列表中。他們可能會添加'十三號星期五'和'The Ring',然後保存。

現在我在2個單獨的POSTS中將這兩部電影添加到Web服務器,以便將它們添加到UserMovieListItem。

我希望能夠在1 POST中添加它們。

{ 
    "user_movie_list_item": 
    { 
    "title": "Friday the 13th" 
    }  
} 

我希望能在

{ 
    "user_movie_list_item": 
    { 
    "title": "Friday the 13th" 
    }, 
    { 
    "title": "The Ring" 
    } 
} 

1發),這是爲JSON發送多個條目正確的格式?

2)如何在我的控制器中執行此操作?

現在我有...

def create 
    if authenticate_user 
     user_movie_list = @current_user.user_movie_lists.find_by_id(params[:user_movie_list_id]) 
     user_movie_list_item = user_movie_list.user_movie_list_items.new(user_movie_list_item_params) 
     if (user_movie_list_item.save!) 
      respond_with :api, :v1, @current_user, user_movie_list, user_movie_list_item, location: nil, serializer: Api::V1::UserMovieListItemSerializer 
     else 
      render json: { error: "Could not create new User Movie List Item."}, status: :unprocessable_entity 
     end   
    else 
     render json: { error: "User is not signed in." }, status: :unauthorized 
    end 
end 

我怎樣才能讓這樣我就可以一次添加多個記錄?

+0

我建議用替換 「如果的authenticate_user」 「before_action:的authenticate_user」。 – 2015-03-18 16:41:47

回答

0

在你的模型,你可以覆蓋分配是這樣的:

def user_movie_list=(list) 
    list.each do | l | 
    ml = user_movie_list_items.new 
    ml.title = l.title 

    ... # configure your list 

    ml.save! 
    end 
end 

JSON名單是:

{ "my_list": [{"title": "blah"}, {"title": "foo"}, ... ] } 
+0

謝謝。我怎樣才能將參數定義爲JSON數組? def user_movie_list_item_params params.require(:user_movie_list_item).permit(:user_movie_list_id,:title,)end or你是說我可以去def user_movie_list_item_params =(list)並迭代它? – 2014-10-01 05:49:48

相關問題