【发布时间】:2014-08-10 05:22:06
【问题描述】:
在我的架构中,我有一个名为 Imprintables 的模型。在这个模型中,我有这种自指关系:
class Imprintable < ActiveRecord::Base
has_and_belongs_to_many :coordinates, class_name: 'Imprintable', association_foreign_key: 'coordinate_id', join_table: 'coordinates_imprintables'
...
end
在 imprintable 创建/编辑表单中,我有一个选择字段,用户可以在其中选择坐标 imprintables(坐标用于识别与正在创建/编辑的类似的 imprintables)。我的问题是,如果我有一个可打印的 A 和一个可打印的 B,当我创建 A 并将 B 列为可打印坐标时,我希望能够查看 B 的编辑表单并看到 A 也列为坐标。
我尝试修改控制器的更新并创建操作以将两对 id 插入链接器表 (coordinates_imprintables)。例如,如果 A.id = 1 和 B.id = 2,则执行一些 sql,如:
INSERT INTO coordinates_imprintables (imprintable_id, coordinate_id) VALUES (1, 2)
INSERT INTO coordinates_imprintables (imprintable_id, coordinate_id) VALUES (2, 1)
但我无法让它工作,因为我不确定如何知道用户何时尝试删除或插入坐标,而且我什至不确定这是否是正确的答案。 Railscasts 有点帮助,这似乎是一个棘手的案例,因为我有一个具有自引用关系的模型也是对称的。谢谢你的时间!
【问题讨论】:
标签: ruby-on-rails associations has-and-belongs-to-many