2013-02-18 61 views
1

我想有總是至少一個數據庫文件,其中有一個名爲場「selected」設置爲true。我怎麼做?最大的可能是我必須使用回調,但哪一個:before (or after) _create, _upsert, _updateMongoid - 設置字段爲true至少一個文檔

我怎麼能保證它會被設置爲true任何操作執行:創建,更新,更新插入...?我想這不會是正確創建回調爲他們每個人。

回答

2

after_save always runs後創建&更新

,所以你可以這樣做:

after_save do |your_class| 
    your_class.update_column(:selected, true) unless YourClass.where(selected: true).exists? 
end 

NB./ update_column should not fire the after_save again

+0

不會有無限循環? – 2013-02-18 15:59:46

+0

好一點。有對NB./ http://stackoverflow.com/questions/632742/how-can-i-avoid-running-activerecord-callbacks/7386222#7386222 – gef 2013-02-18 16:09:46

+0

不會有無限循環的鏈接? – 2013-02-19 01:18:24

相關問題