Migration to acts_as_list

Salut,

Je souhaiterai migrer une appli ayant un model contenant has_many en lui
ajoutant acts_as_list

exemple sur une nouvelle appli avec la base suivante:

http://pastie.caboo.se/12734

une fois quelques listes créé contenant chaqu’une quelques items je
souhaite ajouter la possibiliter de repositioner mes items.

Pour ce faire, je pense à acts_as_list hors il me reste un soucis lors
de la migration.

voici mon code actuel:

http://pastie.caboo.se/12735

Actuellemnt le problème ce situe au niveau de l’ajout de la colonne
position de la table item. Il faudrai qu’elle soit automatiquement
initialisé en fonction de la liste parente et de la date de creation
(l’id faisant reference).

Merci d’avance pour cette réponse, il me semble d’ailleur que cela
pourrai faire une bonne recette :wink:

Sébastien Grosjean - ZenCocoon

Actuellemnt le problème ce situe au niveau de l’ajout de la colonne
position de la table item. Il faudrai qu’elle soit automatiquement
initialisé en fonction de la liste parente et de la date de creation
(l’id faisant reference).

je te propose ça (non testé)

List.find(:all) do |list|
list.items.find(:all, :order => ‘id asc’).each_with_index |item,index|
item.position = index+1
item.save!
end
end

a+

Thibaut

List.find (:all) do |list|
list.items.find(:all, :order => ‘id asc’).each_with_index |
item,index|
item.position = index+1
item.save!
end
end

sweet :slight_smile:

Nicolas P. wrote:

List.find (:all) do |list|
list.items.find(:all, :order => ‘id asc’).each_with_index |item,index|
item.position = index+1
item.save!
end
end

sweet :slight_smile:

Très sympa, d’un simpliciter qui fait plaisir !

Après les tests, voici donc la version final:

http://pastie.caboo.se/12745

Merci pour votre soutiens :wink:

Sébastien Grosjean - ZenCocoon

Thibaut Barrère wrote:

et ça marche tout aussi bien.

Merci pour le detail.

Sébastien Grosjean - ZenCocoon

Petit détail: acts_as_list sait ajouter “_id” au scope tout seul, par
conséquent tu peux écrire:

acts_as_list :scope => :list

au lieu de

acts_as_list :scope => :list_id

et ça marche tout aussi bien.

a+

Thibaut