0
我有一個Ruby on Rails 3應用程序,它使用ancestry gem爲模型提供分層樹結構,並與acts_as_list gem結合以提供顯式定位層次結構的每個級別。Rails:Ancestry + Acts_as_List Gems在更改父對象時無法按預期工作
class Obj < ActiveRecord::Base
...
has_ancestry
acts_as_list scope: [:ancestry]
...
end
此外,我使用的對象下面的方法來改變對象的父:
- 更改的位置:作品當預期
# Credit to the author of the ancestry gem for the code. def move_to_child_of(reference_instance) transaction do remove_from_list self.update_attributes!(:parent => reference_instance) add_to_list_bottom save! end end
一切對象在同一父對象中。
- 當對象沒有後代時更改對象的父對象。
我有的問題是,改變一個對象,也有後代的父母造成acts_as_list
不僅改變物體的位置,而且還改變所有子對象的位置爲好。這會導致所有後代對象的位置不可靠,並導致不必要的數據庫調用。
有沒有什麼辦法來防止這種情況發生,或者是這種預期的行爲?
任何幫助將不勝感激;謝謝!
我自己也在遇到這個問題(PR仍然是開放的)。我不認爲你仍然有這些代碼,可以發佈一個要點?我剛剛添加的兩個方法('scope_condition'和'從https://github.com/swanandp/acts_as_list/issues/131#issuecomment-210130196 scope_changed')和我自己的測試中,它似乎使問題消失,但我懷疑我錯過了什麼。你還有'acts_as_list作用域:[:祖先]'?你寫了一個自定義的「移動」方法嗎? –