factory_girl忽略它正在创建实例的类的命名空间

时间:2016-01-05 15:43:35

标签: ruby-on-rails rspec factory-bot mongomapper

我经常搜索,但找不到任何类似的问题。假设我们有名称空间模型,UserManagement::UserUserManagement::Session。 以下是这些模型的工厂:

FactoryGirl.define do
  factory :user, class: UserManagement::User do
    UserManagement::User.set_database_name 'db_name'

    id '000000000a00a000a0000001'
    login 'Mark'
    password 'password'
    password_confirmation 'password'
    data { {} }
    session { build(:session) }

    initialize_with { new(attributes) }
  end
end

FactoryGirl.define do
  factory :session, class: UserManagement::Session do
    token '0000-0000-0000'
    expiration { Time.zone.now + 30.minutes }
  end
end

当我执行FactoryGirl.lint时,我收到的是user - uninitialized constant Session (NameError),我认为这是命名空间的问题,因为:user工厂会尝试查找Session模型而不是UserManagement::Sesssion

1 个答案:

答案 0 :(得分:1)

好的,所以我找到了解决这个问题的方法。因为我猜MongoMapper不像模块那样友好,就像ActiveRecord一样。我必须明确定义我的Session关联是哪个类名,即使它在同一模块范围内。所以解决方案是一个:session,class_name:'UserManagement :: Session'感谢大家的帮助!