Rails计算记录

时间:2018-04-05 12:27:00

标签: ruby-on-rails activerecord

我有一个number属性的记录列表。

  • 发票(user_id:1,编号:nil)
  • 发票(user_id:1,编号:nil)
  • 发票(user_id:2,数字:无)
  • 发票(user_id:3,数字:无)

我想要的结果是:

  • 发票(user_id:1,数字:001)
  • 发票(user_id:1,数字:002)
  • 发票(user_id:2,电话号码:001)
  • 发票(user_id:2,数字:002)

尝试:

    Invoice.all.each do |i|
     i.number = "#{sprintf '%03d', i.user.invoices.count + 1}"
     i.save
    end

但得到了当前的结果:

  • 发票(user_id:1,数字:002)
  • 发票(user_id:1,数字:002)
  • 发票(user_id:2,编号:003)
  • 发票(user_id:2,编号:003)

如何获得所需的结果?感谢

1 个答案:

答案 0 :(得分:1)

尝试类似

的内容
    User.all.each do |user|
      number = 1
      user.invoices.order(:id).each do |i|
       i.number = "#{sprintf '%03d', number}"
       i.save
       number +=1
      end
    end