我想订购表格中的条目,稍后用户会对它们进行重新排序,因此我不想使用该ID。我刚刚添加了:order列,值目前都是零。我知道我可以使用update_all给它们所有相同的值但是我如何给每一行的值比最后一行高一些(例如1,2,3,4,5,6等)?
我正在使用rails 3.2。
答案 0 :(得分:2)
您需要将order
字段上传到迁移中。如果您有很多记录,请考虑将其包装成转换:
Class.transaction do
Class.each_with_index do |record, index|
# index will start at 0 which is probably not what you want
record.update_attribute :order, index + 1
end
end
答案 1 :(得分:0)
只需添加到导轨中的@mdemolin
回答,我们通常会使用种子来填充数据库,这样您也可以进行佣金任务< / strong>并在那里更新您的订单值。在您的 db / seeds.rb 文件中,您可以执行以下操作:
users = User.all
users.each_with_index do |user, index|
user.update_attribute(:order => index+1 )
end
然后在您的终端中运行rake db:seed