首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >控制器创建多个项目-如何创建一些项目而不是其他项目?

控制器创建多个项目-如何创建一些项目而不是其他项目?
EN

Stack Overflow用户
提问于 2012-03-09 12:08:43
回答 1查看 40关注 0票数 1

假设我有下面的方法。

代码语言:javascript
代码运行次数:0
运行
复制
def create_multiple
  project = Project.find(params[:project])
  params[:tasks].each_value { |task| @tasks << @project.tasks.build(task) }
  project.save

  respond_with @tasks
end

我考虑过将其更改为调用.create而不是build来创建任务,因为我希望在没有验证错误的情况下保存任务,即使其他任务由于验证而失败。我很好奇别人是怎么看这个想法的?我也考虑过使用create_or_update,但我想鼓励人们删除成功创建的项目,而不是重复调用相同的列表,直到所有项目都创建完毕。

有没有更好的方法来做到这一点,这样我就可以继续调用.save一次,并让它创建通过验证的验证和不通过验证的验证,而不会完全失败?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 09:56:01

我不确定你到底想要实现什么,但是如果你想避免在那些验证失败的任务上调用save,不如只创建新的任务,过滤有效的,然后将它们附加到项目中?

代码语言:javascript
代码运行次数:0
运行
复制
def create_multiple
  project = Project.find(params[:project])

  @tasks = params[:tasks].map{ |task| Task.new(task) }
                         .select{ |task| task.valid? }
  project.tasks = @tasks 
  project.save

  respond_with @tasks
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9628807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档