我有一个简单的架构产品,其中包含many_to_many:tags关系,没有连接表的中间架构。
many_to_many :tags, Tag, join_through: "products_tags"
现在问题很简单,在Ruby的ActiveRecord中,有一个方便的setter,你可以设置为相关记录的ID数组,它会自动更新连接记录,即:product.tag_ids = [1, 2, 5, 6]
如果我想使用put_assoc
,在Ecto中,似乎需要我预先加载数组中的所有标记,因此我可以perform put_assoc(:tags, tags)
...
如果我不想预加载它们,就像在ActiveRecord中完成的那样?
答案 0 :(得分:1)
如果我不想预加载它们,就像在ActiveRecord中完成的那样?
Ecto.Changeset.put_assoc
文档(摘录):当更新数据时,此函数需要在changeset结构中预先加载关联。缺少数据将调用关联上定义的
:on_replace
行为。 新建结构不需要预加载。
如果你想在没有预加载的情况下这样做,我想你只需要自己编写查询。