如何实现控制器以处理一个或多个记录的创建?

时间:2014-06-14 20:35:30

标签: ruby-on-rails ruby ruby-on-rails-4 controller save

我正在使用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 个答案:

答案 0 :(得分: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