FactoryGirl error: uninitialized constant Post::user

FactoryGirl error: uninitialized constant Post::user

我在处理 FactoryGirl 时遇到了一个奇怪的命名空间错误。模型是 Post ⤞ User。 代码是:

require 'factory_girl'
require 'active_record'

class User < ActiveRecord::Base ; end
class Post < ActiveRecord::Base
  has_one :moderator, class_name: :user
end

::FactoryGirl.define do
  factory :user do
    name 'Ghghghgh Ghghg'
  end
  factory :post do
    text 'Lorem ipsum etc'
    association :moderator, factory: :user, strategy: :create
  end
end

要求罚款,返回true。现在,当我尝试生成一个实例时,出现此错误:

FactoryGirl.create :post
#⇒ NameError: uninitialized constant Post::user

我明显遗漏了什么?

问题出在这里:

has_one :moderator, class_name: :user

没有名为user的class; class 的名字是 User。你想要这个:

has_one :moderator, class_name: "User"