我有一个布尔字段,在一个有很多直通关系:标签和标签列表的连接表中,默认值为false。
add_column :taggings, :tag_visible, :boolean, :default => false
理论上,标签列表可以包含许多标签(反之亦然),但每个标签列表可以关闭/打开标签可见性。
这也是嵌套资源的一部分:Document has_one :tag_list
在大多数情况下,这一切都有效。默认值是在创建时设置的,我正在使用ajax调用更新每个实例。
但是,当我将包含tag_list的文档更新为令牌输入字段时,无论以前是什么,它都会将所有标记的可见性重置为false。
任何线索都会非常感激。
答案 0 :(得分:0)
事实证明,在我的标签中,我的tag_list模型中的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]) }