我正在尝试添加acts_as_list
到我的数据库中的现有playlists
表中,该表存储我的用户可能创建的所有播放列表。目标是允许用户对自己的播放列表进行排序。
此迁移将为表中的播放列表设置默认位置,但该位置将在全局上下文中设置(例如,position
对于其中包含 500 个播放列表的表,该列将按 1-500 排序):
class AddPositionToPlaylistsTable < ActiveRecord::Migration
def self.up
add_column :playlists, :position, :integer
Playlist.reset_column_information
playlist = Playlist.find(:all, :order => "created_at ASC")
playlist.each_with_index do |p, i|
p.position = i+1
p.save
end
end
def self.down
remove_column :playlists, :position
end
end
这个顺序会有问题,因为将项目的位置从 500 移动到 499 不一定反映从用户的角度来看的任何变化(因为他们可能有具有 50、70、100position
和 500 的播放列表)。
相反,我想在每个用户上下文中为表中的每个播放列表设置一个位置(例如,假设每个用户有 5 个播放列表,该position
列将有多个播放列表实例,每个用户按 1-5 排序)。
这是否可能,如果可以,我将如何修改我的迁移来实现这一点?