如何使用FactoryGirl初始化名为'sequence'的列

时间:2012-09-07 20:20:10

标签: ruby-on-rails factory-bot

我有一个表,其中包含一个名为“sequence”的整数类型列,它不允许空值。如果我尝试正常定义工厂,FactoryGirl认为我正在尝试设置序列而不是定义列名。

factory :my_table do
    sequence 1
end

# NoMethodError: undefined method `to_sym' for 1:Fixnum

如何设置它以便FactoryGirl将其识别为普通列,而不是FactoryGirl序列?如果我想使用实际序列用唯一递增整数值填充列,该怎么办?我可以看到一个名为“trait”或“association”的列可能存在同样的问题。顺便说一下,我正在使用factory_girl 3.3.0和rails 3.2.8。

1 个答案:

答案 0 :(得分:11)

谷歌搜索找到了这个解决方案:

factory :luggage do
  add_attribute :sequence, "12345"
end

https://groups.google.com/forum/?fromgroups=#!topic/factory_girl/OriR9gXlMZI

如果您需要创建序列并使用它,请参阅此备忘单:

  

序列:

# Defines a new sequence
Factory.sequence :email do |n|
  "person#{n}@example.com" 
end

#Uses the sequence
Factory.next :email
# => "person1@example.com"

# can also be defined inline:
Factory.define :user do |u|
  u.sequence(:email) { |n| "persion#{n}@example.com" }
end

http://cheat.errtheblog.com/s/factory_girl