3

null を許可しない「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 を使っています。

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 に答える