2013-04-05 66 views
0

我有一個布爾型字段,在具有很多穿透關係:標記和標記列表的連接表中,其默認值爲false。ActiveRecord布爾重置爲更新時的默認值

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

該理論認爲,一個標籤列表可以有很多標籤(反之亦然),但標籤的知名度可以關閉/每標籤列表上。 這也是一個嵌套資源的一部分:Document has_one :tag_list

大多數情況下,這是所有的工作。默認值是在創建時設置的,我正在用ajax調用更新每個實例。

但是,當我更新包含tag_list作爲標記輸入字段的文檔時,它將所有標記的可見性重置爲false,而不管它以前是什麼。

任何線索將不勝感激。

+0

嘗試看看通過更新和的Tagging確保tag_visible'的'值就是你想要的PARAMS。 – jvnill 2013-04-05 00:17:40

+0

它不在那裏,這是理想的我想要的。我寧願這個領域沒有受到更新。 – 2013-04-05 00:21:18

+1

生成的SQL看起來是什麼造成了這種情況?導致這種情況的ActiveRecord代碼是什麼樣的? – Mischa 2013-04-05 00:31:57

回答

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]) } 
相關問題