保存记录时的增量字段

时间:2015-10-01 21:08:38

标签: ruby-on-rails mongodb mongoid

我想在商店中找到如下字段:

CO-1
CO-2
CO-3
...

我计划在before_create或after_create回调中执行此操作:

class Contact
    include Mongoid::Document

    after_create :set_reference_number

    def set_reference_number
      ...
    end
end

由于mongodb使用的是12字节的BSON类型而不是自动增量的整数,因此我不能简单地只获取保存记录的id值。我读到mongodb有一个findAndModify函数,它允许你递增一个字段,但我的字段将被存储为一个字符串,例如" CO-1&#34 ;.无论如何都要有效地实现我想要的东西而不诉诸于此:

    def set_reference_number
      prefix = self.is_a?(Contact) ? 'CO' : 'PR'
      last_document = self.class.order_by([:created_at, :desc]).last
      if last_document.present?
        val = last_document.reference_number.match(/^\w+-(.+)/)[1].to_i
        self.reference_number = "#{prefix}-#{val+1}"
      else
        self.reference_number = "#{prefix}-#{1}"
      end
      save!
    end

0 个答案:

没有答案