首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4将FactoryGirl链接到PostgresSequence

Rails 4将FactoryGirl链接到PostgresSequence
EN

Stack Overflow用户
提问于 2016-07-14 17:57:44
回答 1查看 97关注 0票数 0

在由number序列创建的controller表中有一个惟一的字段postgres。迁移的方式如下:

代码语言:javascript
复制
def self.up
         execute "CREATE SEQUENCE controller_number_seq START WITH 11000000"
         execute "ALTER TABLE controller ALTER COLUMN controller_number SET DEFAULT nextval('controller_number_seq');"
end

每当我现在创建一个新的Controller实例时,数字就会增加到由这个序列定义的下一个空闲值。

现在,我想知道如何将我的:controller工厂链接到这个postgres序列。我可以创建这样的FactoyGirl序列

代码语言:javascript
复制
sequence(:phone){|n| "1100000#{n}"}

(它也只适用于n<10,否则会产生错误的数字)

但是似乎有一种更干净的方法,因为我使用了数据库,我应该能够直接访问postgres序列并将其分配给我的:controller工厂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-14 19:48:12

正如它在FactoryGirl文档中所说的,您可以为序列设置初始值:

还可以重写初始值: 工厂:用户do序列(:email,1000) {person#{n}@example.com“} end

你的例子就是:

代码语言:javascript
复制
sequence(:phone, 11000000)

我不认为为此目的使用数据库生成器是个好主意。例如,在运行测试或示例组之后,您必须确保值重置。此外,出于性能原因,通常希望将测试与数据库分离。如果没有特定的语义依赖于数据库级别上的序列,那么FactoryGirl序列就会做得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38381080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档