假设我有下面的方法。
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一次,并让它创建通过验证的验证和不通过验证的验证,而不会完全失败?
发布于 2012-03-13 01:56:01
我不确定你到底想要实现什么,但是如果你想避免在那些验证失败的任务上调用save,不如只创建新的任务,过滤有效的,然后将它们附加到项目中?
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
https://stackoverflow.com/questions/9628807
复制