我尝试为现有工厂定义别名,但它给我一个错误:undefined method author= for #<Post:0x7217bc8>
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
这两个模型具有User has_many:posts和Post belongs_to:user
的关联测试跑:
it "should be valid" do
post = build(:post)
post.should be_valid
end
有什么建议为什么它会给我这个错误?即时关注此guide
答案 0 :(得分:1)
似乎在指南Post
模型中确实有author
关联
对于帖子来说,author
而不是user
更为自然
因此,在指南中Post
确实有author
方法。
您可以在user
模式中将author
关联修改为Post
,例如
belongs_to :author, class_name: 'User', foreign_key: 'user_id'
或将post
工厂更改为此类
factory :post do
association :user, factory: :author # or user { create :author }
title "Monkey"
content Faker::Lorem.paragraph(2)
end
另请注意,您无需使用块将原始值设置为title
或content