0

Image:text列という名前のモデルがあり、 FactoryGirlを使用しimageてフィールドを保存できません。image

関連するコードは次のとおりです。

image_spec.rb:
let(:image) { FactoryGirl.create(:image) }
subject { image }
it { should be_valid }


factories.rb:
factory :image do
    image "123456789.jpg"
end


image.rb:
attr_accessible :image
validates :image, presence: true

テストを実行すると、エラーが発生します

Failure/Error: let(:image) { FactoryGirl.create(:image) }
 ActiveRecord::RecordInvalid:
   Validation failed: Image can't be blank

上記の3行すべてについてimage_spec.rb

FactoryGirlで「sequence」という名前の列を初期化する方法を適用しようとしましたが、機能させることができませんでした。(他のモデルのFactoryGirlの作成は正常に機能します)

テーブルと同じ名前の列に割り当てるにはどうすればよいですか?

4

1 に答える 1

1

これを試して:

FactoryGirl.define do
  factory :image do |i|
    i.some_attr 'xxx'
    i.image "123456789.jpg"
  end
end

そうすることで、実際に画像オブジェクトの image= メソッドを呼び出すことができます。逆に、工場の女の子は、関連付けを作成しようとしていると考えます。

(とにかく、その列に紛らわしい名前を実際に使用しました:P、image_pathなどの方が良いでしょう)

于 2013-01-23T02:35:06.580 に答える