从工厂女孩那里找到活动记录
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
我试图在 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