0

Actuellement, je mets à jour l'application rails 2 sur rails 3.2.13 qui utilise acts_as_tree et acts_as_list. Avant, la mise à niveau fonctionne bien. Depuis, j'ai un problème avec acts_as_tree et acts_as_list with dependent détruit.Détruire Détruire avec acts_as_tree et acts_as_list

je dois modèles:

class User < ActiveRecord::Base 
    has_many :categories, dependent: :destroy 
end 

class Category < ActiveRecord::Base 
    acts_as_tree 
    acts_as_list scope: [:user_id, :parent_id] 
    belongs_to :user 
end 

Étant donné que j'ai un utilisateur:

<User id:1> 

et 2 catégories et une de ces catégories sont les enfants de l'autre:

<Category id:1 parent_id:nil user_id:1> 
<Category id:2 parent_id:1 user_id:1> 

Lorsque j'essaie de détruire l'utilisateur, le dependent: :destroy essaie de détruire les catégories. Il détruit la première catégorie. Comme la catégorie a un enfant (id 2) acts_as_tree le détruit aussi. Mais il semble alors que acts_as_list essaie de recharger les positions de la deuxième catégorie. Naturellement, il n'existe plus donc il soulève:

Couldn't find Category with id=2 
gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:343:in `find_one' 
gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:314:in `find_with_ids' 
gems/activerecord-3.2.13/lib/active_record/relation/finder_methods.rb:107:in `find' 
gems/activerecord-3.2.13/lib/active_record/querying.rb:5:in `find' 
... 
gems/activerecord-3.2.13/lib/active_record/autosave_association.rb:226:in `reload' 
gems/acts_as_list-0.2.0/lib/acts_as_list/active_record/acts/list.rb:409:in `reload_position' 
gems/activesupport-3.2.13/lib/active_support/callbacks.rb:418:in `_run__108545607483159770__destroy__3935615418128680560__callbacks' 
... 
gems/activerecord-3.2.13/lib/active_record/callbacks.rb:254:in `destroy' 
gems/activerecord-3.2.13/lib/active_record/transactions.rb:254:in `block in destroy' 
gems/activerecord-3.2.13/lib/active_record/transactions.rb:313:in `block in with_transaction_returning_status' 
gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
gems/activerecord-3.2.13/lib/active_record/transactions.rb:208:in `transaction' 
gems/activerecord-3.2.13/lib/active_record/transactions.rb:311:in `with_transaction_returning_status' 
gems/activerecord-3.2.13/lib/active_record/transactions.rb:254:in `destroy'  

Quelqu'un a-t-il une idée pour le résoudre?

PS: Rails 3.2.13, Ruby 1.9.3, 1.4.0 et acts_as_tree acts_as_list 0.2.0

Répondre