2014-06-14 75 views
0

我正在使用Ruby on Rails 4.1。我有一個「嵌套」模型,並且在其控制器中,我希望使用RESTful create行動來處理提交一個或多個記錄的情況。也就是說,我的控制器create操作是:如何實現控制器以處理創建一個或多個記錄?

def create 
    @nester = Nester.find(:nester_id) 
    @nesters_nested_objects = @nester.nested_objects.build(create_params) 

    if @nnesters_ested_objects.save 
    # ... 
    else 
    # ... 
    end 
end 

def create_params 
    params.require(:nesters_nested_object).permit(:attr_one, :attr_two, :attr_three) 
end 

我想它來處理這兩種情況下,當params包含與一個對象的數據,當它包含與多個對象數據。

我該如何做到這一點?我應該實施新的控制器操作(可能是create_multiple)還是什麼?爲了處理這些情況,有一種常見的做法?

+1

我相信一般的做法是使用'accep_nested_attributes_for'創建嵌套記錄以及父記錄。 – Almaron

+0

@Almaron - 在我的情況下,該動作旨在用於公共API,並且我可以/不會使用'accep_nested_attributes_for'。 – user502052

+0

好吧,那麼我想你可以從params中獲取一個數組並通過它進行迭代。 – Almaron

回答

0

好吧,如果你堅持從自己的巢創造的記錄之外,我可以建議去像這樣的東西(它最好是一個真正的獨立的方法):

def create_multiple 
    @nest = Nester.find(params[:nester]) 
    params[:nested_objects].each do |item| 
    @nest.nested.new(item.permit(:attr_one, :attr_two, :attr_three)) 
    end 
    if @nest.save 
    .... 
    else 
    .... 
    end 
end 
相關問題