为了展示我的问题,我正在编写这个例子。假设我们有以下模型:
class Case < ApplicationRecord
has_many :clients
accepts_nested_attributes_for :clients
end
class Client < ApplicationRecord
belongs_to :case
has_many :attorneys
accepts_nested_attributes_for :attorneys
end
class Attorney < ApplicationRecord
belongs_to :client
end
我想将 相同的 新 律师添加到不同的客户。
如果我使用这样的参数来更新案例:
{
"clients_attributes"=>{
"0"=>{
"id"=>"1",
"attorneys_attributes"=>{
"123"=>{
"name"=>"Joe"
}
}
},
"1"=>{
"id"=>"2",
"attorneys_attributes"=>{
"456"=>{
"name"=>"Joe"
}
}
}
}
}
Rails将创建两个同名“Joe”的新律师记录。我想创建一条记录并让两个客户都参考它。是否有一些聪明的是引用尚未创建的记录?
我能做的一件事是检查服务器端的参数是否有相同的名称,并进行一些更新后的工作。有更简单的方法吗?
答案 0 :(得分:0)
Rails通过ID检查它是否是相同的记录。因此,如果您使用嵌套字段,但想重复使用律师记录,则需要确保其ID相同。
另一方面,为什么要使用嵌套字段?通常你有一个嵌套的表格来更新信息,但对于你的情况来说......这意味着更新任何客户模式下的律师信息 - 以及更新一个客户的律师,实际上会影响其他客户下的所有律师
正如@DollarChills在评论中提到的那样,为什么不在客户下为律师使用选择字段,并创建一个单独的页面来更新律师信息?
更新:自动完成解决方案
name
为例create new attorney
选项