2016-06-23 10 views
0

を定義するために、私は、既存の工場に別名を定義しようとしているが、そのは私にエラーを与える:undefined method author= for #<Post:0x7217bc8>FactoryGirl Railsの:どのように適切にエイリアス

FactoryGirl定義

FactoryGirl.define do 

    factory :user, aliases: [:author] do |f| 
    f.username { "Banana" } 
    f.email { "Ilovebanana" } 
    end 

    factory :post do |p| 
    author 
    p.title { "Monkey" } 
    p.content { Faker::Lorem.paragraph(2) } 
    end 
end 

2つのモデルポストとポストBELONGS_TO:ユーザー

テストが実行された:

ユーザーにhas_manyの関連性を持っています
it "should be valid" do 
    post = build(:post) 
    post.should be_valid 
end 

なぜ私にそのエラーを与えているのですか?この後に続くguideここに

答えて

1

ガイドのようですPostモデルはauthorを持っています。
投稿がuserではなくauthorであることがより自然です。
ガイドでPostauthor方法があると思います。

また、あなたはブロックを使用する必要がないことに気づく

belongs_to :author, class_name: 'User', foreign_key: 'user_id' 

ようPostモデルにauthorにごuserの関連付けを編集したり、この

factory :post do 
    association :user, factory: :author # or user { create :author } 
    title "Monkey" 
    content Faker::Lorem.paragraph(2) 
end 

ような何かにあなたのpost工場を変更することができますフィールドにプリミティブ値を設定するにはtitleまたはcontent

関連する問題