rails使用id创建临时对象

时间:2015-02-10 17:24:01

标签: mysql ruby-on-rails associations simple-form

我试图找到解决上述问题的方法。

基本上,我有一个模型'Job',它拥有并属于许多联系人和位置。当用户开始创建新作业时,他们应该能够开始向新记录添加位置和联系人。问题是当我尝试保存记录时。用户如何将位置和联系人记录关联到尚未拥有ID的作业记录?我在创建操作上得到的错误消息是

对于我尝试添加的每个联系人,我都会得到一个

  Validation failed: Job contacts is invalid

我猜这是因为在分配时不存在作业ID。

通过控制器的参数都在job_params中,这就是我希望它们被接收的方式。这有助于SimpleForm,它为habtm记录提供了方便的“关联”方法。如果可能的话,我想使用简单的表单(不使用field_tags等)将所有内容保存在表单对象中。例如,联系人字段看起来像这样。

=f.association :contacts, collection: job.client.contacts, as: :check_boxes 

那么我的选择是什么?有什么我能做的不同吗?

我考虑过以下事项:

  1. 在新操作中创建记录并使用标志对其进行设置以声明其无效,直到填充了必要的字段。在这一点上,它可以成为一个“适当的”记录,但这感觉好像它有可能变得非常混乱。

  2. 使用STI启动虚拟记录?

  3. 也许我已经完全放弃了所有这些,但即使是某个方向也会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

将用户ID分配给作业。然后,在为用户寻找工作时

jobs = Job.where("user_id = ?", user.id)