2016-06-23 4 views
0

Ich versuche, ein Aliase zu einer bestehenden Fabrik zu definieren, aber die gibt mir eine Fehlermeldung: undefined method author= for #<Post:0x7217bc8>factory Rails: wie man richtig Aliases definieren

factory Definition

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 

Die beiden Modelle hat eine Vereinigung von Benutzern has_many: Beiträge und Post belongs_to: user

-Test lief:

it "should be valid" do 
    post = build(:post) 
    post.should be_valid 
end 

Irgendein Vorschlag, warum es mir diesen Fehler gibt? ich folgende guide hier

Antwort

1

Es scheint wie in der Anleitung Post Modell hat author Assoziation.
Es ist natürlicher für eine Post, eine author anstelle einer user zu haben.
Also in der Anleitung Post hat author Methode denke ich.

Sie können Ihre user Verein author in Post Modell wie

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

oder ändern Sie post Fabrik zu so etwas wie dieses

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

auch bearbeiten feststellen, dass Sie nicht brauchen, um Block zu verwenden um Grundwerte auf die Felder title oder content

zu setzen
Verwandte Themen