加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用Factory Girl创建具有唯一属性的实例

发布时间:2020-12-16 23:12:24 所属栏目:百科 来源:网络整理
导读:我有一个约束和一个验证放在guid字段,以便每个都是唯一的.问题是,根据我在下面的工厂定义,我只能创建一个用户实例,因为其他实例无法通过验证. 我该怎么做才能使guid字段始终是唯一的? Factory.define(:user) do |u| u.guid UUIDTools::UUID.timestamp_creat
我有一个约束和一个验证放在guid字段,以便每个都是唯一的.问题是,根据我在下面的工厂定义,我只能创建一个用户实例,因为其他实例无法通过验证.

我该怎么做才能使guid字段始终是唯一的?

Factory.define(:user) do |u|
  u.guid UUIDTools::UUID.timestamp_create.to_s
end

解决方法

通常,Factory Girl通过序列解决问题:
Factory.define(:user) do |u|
  u.sequence(:guid) { |n| "key_#{n}" }
end

但是,我假设您不希望有类似迭代器的东西,而是时间戳.
这可以使用惰性属性(在运行时评估)来完成:

Factory.define(:user) do |u|
  u.guid { Time.now.to_s }
end

或者,假设UUIDTools :: UUID.timestamp_create生成(希望格式合适的)时间戳:

Factory.define(:user) do |u|
  u.guid { UUIDTools::UUID.timestamp_create.to_s }
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读