2011-09-02 20 views
8

Tôi muốn thực hiện một loại danh sách yêu thích. Cho phép lấy một danh sách chơi cho ví dụ này:Sắp xếp lại danh sách thứ tự với Ruby on Rails

Song A 
Song D 
Song B 
Song C 

Trình tự các bài hát sẽ được lưu lại và người dùng sẽ có thể sắp xếp lại thứ tự này và chèn các yếu tố mới tại một điểm tùy ý trong danh sách.

Ý tưởng của tôi là sử dụng trường "vị trí" và đặt lại nó cho tất cả các phần tử của danh sách, khi danh sách được lưu. Tôi nghĩ đó là những gì Javas Hibernate làm.

ý tưởng khác là sử dụng số vị trí với một sự khác biệt lớn, nói 1000, do đó vẫn có chỗ cho những sửa đổi:

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

Sông C sẽ được chèn vào giữa A và D với vị trí số 1500:

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

Bạn có ý tưởng nào tốt hơn không?

Trả lời

8

Tại sao không sử dụng acts_as_list?

+0

Cách actions_as_list giải quyết vấn đề này đằng sau hậu trường? – Bijan

+0

actions_as_list thật là khủng khiếp fwiw. Chúng tôi không thể sử dụng nó trong sản xuất. – RandallB

5

Nếu bạn muốn cuộn của riêng bạn, câu trả lời cho câu hỏi này có thể hữu ích:

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

Có vẻ như sự đồng thuận là chỉ cần sử dụng một lĩnh vực trật tự sắp xếp lại tất cả chúng vào lưu. Bạn có thể giảm thiểu số lượng cơ sở dữ liệu hoạt động nếu bạn cho phép người dùng thực hiện sắp xếp lại phía máy khách tương tác và chỉ gửi danh sách cuối cùng để lưu lại máy chủ.

Các vấn đề liên quan