Ruby on rails ActiveRecord布尔值在更新时重置为默认值

Ruby on rails ActiveRecord布尔值在更新时重置为默认值,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个布尔字段,它在一个has-many-through关系的连接表中有一个默认值false:标记和标记列表 add_column :taggings, :tag_visible, :boolean, :default => false 理论上,一个标记列表可以有许多标记(反之亦然),但每个标记列表都可以关闭/打开标记可见性。 这也是嵌套资源的一部分:文档有一个:标记列表 在大多数情况下,这一切都在起作用。默认值是在创建时设置的,我正在使用ajax调用更新每个实例 但是,当我更新包含标

我有一个布尔字段,它在一个has-many-through关系的连接表中有一个默认值false:标记和标记列表

add_column :taggings, :tag_visible, :boolean, :default => false
理论上,一个标记列表可以有许多标记(反之亦然),但每个标记列表都可以关闭/打开标记可见性。 这也是嵌套资源的一部分:
文档有一个:标记列表

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

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


任何潜在客户都将不胜感激。

结果表明,在我的标签列表模型中的我的标签令牌输入设置器中,我删除并在标签模型中重新创建了一条新记录,而不是更新它

旧代码:

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]) }
修正:


尝试查看传递给更新标记的参数,并确保
tag_visible
的值是您想要的。它不在那里,这正是我想要的。我更希望这个字段不被更新所触及。生成的SQL看起来是什么样子的呢?导致这种情况的ActiveRecord代码是什么样子的?嗯,你可能发现了什么。从SQL中可以看出,正在删除并重新插入标记记录。我会调查的,谢谢。
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]) }