更新一个新的表列,增加rails 3.2中的值

时间:2014-07-03 11:47:35

标签: ruby-on-rails ruby activerecord ruby-on-rails-3.2

我想订购表格中的条目,稍后用户会对它们进行重新排序,因此我不想使用该ID。我刚刚添加了:order列,值目前都是零。我知道我可以使用update_all给它们所有相同的值但是我如何给每一行的值比最后一行高一些(例如1,2,3,4,5,6等)?

我正在使用rails 3.2。

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