【发布时间】:2014-06-15 02:46:07
【问题描述】:
我在模型 Project 和 Queue 之间有一个 Rails 关联。一个项目有多个队列。队列必须有一个项目,因此在 project_id 上有一个存在验证
假设我想创建一个带有队列的新项目。例如,像这样:
project = Project.new(valid: param, options: here)
project.queues << Queue.new(other_valid: param, options: here)
project.save!
保存将失败,因为队列未通过 project_id 存在验证。
我通常的解决这个问题的丑陋方法是创建一个项目,然后添加队列,并将整个批次包装在一个事务中,这样如果流程的任何部分失败,它就会回滚。 ...不知何故,这似乎比它应该的更丑。
那么,有没有一种更优雅的方式来在新项目上创建队列而无需进行存在验证,但仍然断言这些队列必须有一个项目?
干杯
【问题讨论】:
-
在您的代码中,当将队列分配给 project.queues 时,它应该自动将 project_id 分配给该队列。你确定这会失败吗?
标签: ruby-on-rails activerecord activemodel