从工厂女孩那里找到活动记录

Active Record find from factory girl

我试图在 rails 中实现一个基于数据库的序列生成器,所以我写了一段类似于

的代码
@semaphore.synchronize {
 seq = Sequence.find_by_name(type)
 seq.value += 1
 seq.save

 val = seq.value
 unless prefix.nil?
   "#{prefix}-#{val}"
 else
   "#{val}"
 end
}

我的问题是,是否可以使用 factory girl 设置初始序列数据并能够使用 Sequence.find_by_name 访问它,或者夹具加载是我唯一的选择?即 rake db:fixtures:load RAILS_ENV=test FIXTURES_PATH=spec/fixtures?

谢谢

好的,我找到了答案。

我在工厂女孩中创建了我的序列定义如下:

FactoryGirl.define do

  factory :membership_sequence, class: Sequence do
    name  'membership'
    value 1
  end

  factory :payment_sequence, class: Sequence do
    name  'payment'
    value 1
  end
end

然后,在 before(:all) 中我调用了 create() 方法

before(:all) do
  # create the sequences
  create(:membership_sequence)
  create(:payment_sequence)
end

瞧! Sequence.find_by_name 现在可以工作了。

回答你的问题,为什么我选择手动实现序列生成而不是使用 rails 活动记录自动生成的 ID,这是因为我希望能够生成诸如 PREFIX-2015-0001、PREFIX-2016 之类的序列-0001