2011-09-02 3 views
8

Je veux mettre en place une sorte de liste de favoris. Permet de prendre une liste de lecture pour cet exemple:Liste ordonnée réarrangeable avec Ruby on Rails

Song A 
Song D 
Song B 
Song C 

L'ordre des chansons doit être enregistré et l'utilisateur doit être en mesure de réorganiser cet ordre et insérer de nouveaux éléments à un point arbitraire dans la liste.

Mon idée est d'utiliser un champ "position" et de le réinitialiser pour tous les éléments de la liste, lorsque la liste est sauvegardée. Je pense que c'est ce que fait Javas Hibernate.

Une autre idée est d'utiliser les numéros de position avec une grande différence, disons 1000, de sorte qu'il ya encore de la place pour les modifications:

Song A 1000 
Song D 2000 
Song B 3000 
Song C 4000 

chanson C sera inséré entre A et D avec le numéro de la position 1500:

Song A 1000 
Song C 1500 
Song D 2000 
Song B 3000 

De meilleures idées?

Répondre

8

Pourquoi ne pas utiliser acts_as_list?

+0

Comment acts_as_list résout ce problème dans les coulisses? – Bijan

+0

acts_as_list est si horrible fwiw. Nous ne pouvons pas l'utiliser en production. – RandallB

5

Si vous voulez rouler votre propre, les réponses à cette question peuvent être utiles:

Best way to save a ordered List to the Database while keeping the ordering

On dirait que le consensus est d'utiliser juste un champ de commande et réordonner tous lors de l'enregistrement. Vous pouvez limiter la quantité de travail de base de données si vous autorisez l'utilisateur à réorganiser le côté client interactif, et envoyez simplement la liste finale à sauvegarder sur le serveur.