我经常搜索,但找不到任何类似的问题。假设我们有名称空间模型,UserManagement::User
和UserManagement::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
。
答案 0 :(得分:1)
好的,所以我找到了解决这个问题的方法。因为我猜MongoMapper不像模块那样友好,就像ActiveRecord一样。我必须明确定义我的Session关联是哪个类名,即使它在同一模块范围内。所以解决方案是一个:session,class_name:'UserManagement :: Session'感谢大家的帮助!