0

我有一个布尔字段,它的连接表中的默认值为 false 有很多直通关系:标签和标签列表。

add_column :taggings, :tag_visible, :boolean, :default => false

理论是一个标签列表可以有很多标签(反之亦然),但标签的可见性可以关闭/打开每个标签列表。这也是嵌套资源的一部分:Document has_one :tag_list

在大多数情况下,这一切都有效。默认值是在创建时设置的,我正在使用 ajax 调用更新每个实例。

但是,当我更新包含 tag_list 作为令牌输入字段的文档时,它会将所有标记的可见性重置为 false,无论它以前是什么。

任何线索将不胜感激。

4

1 回答 1

0

事实证明,在我的 tag_list 模型中的 tags token_input setter 中,我删除并在标记模型中重新创建了一条新记录,而不是更新它。

旧代码:

self.taggings = Tag.ids_from_tokens(tokens, user_id).each_with_index.map {|t,i| Tagging.new(:tag_id => t, :tag_colour => tag_colours[i % tag_colours.size]) }

使固定:

self.tag_ids = Tag.ids_from_tokens(tokens, user_id)
self.taggings.each_with_index {|t,i| t.update_attributes(:tag_colour => tag_colours[i % tag_colours.size]) }
于 2013-04-05T03:30:28.523 回答