3

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

factory :my_table do
    sequence 1
end

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

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

4

1 回答 1

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

于 2012-09-07T20:39:15.057 回答