积极记录从工厂女孩找到

时间:2015-04-08 15:32:37

标签: ruby-on-rails activerecord factory-bot

我试图在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
}

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

由于

1 个答案:

答案 0 :(得分:0)

好的,我能找到答案。

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

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 active record autogenerated id,这是因为我希望能够生成序列,如PREFIX-2015-0001,PREFIX-2016-0001