我使用mongoid,我有一个ContactField模型和一个Contact模型。在我的Contact模型中,我这样做:
Admin::ContactField.all.each do |field|
field field.field_name.to_sym#, type: ...
end
所以在prod,dev中,这是函数,但是当我编写测试时,它不起作用,因为模型加载了0 Admin :: ContactField并且它不会重新加载。
所以我正在寻找解决方案,我找不到使用重装的解决方案!就像在控制台中一样,所以我试过了:
config.before(:suite) do
DatabaseCleaner[:mongoid].strategy = :truncation, {:except => %w[admin_contact_fields]}
DatabaseCleaner[:mongoid].clean_with(:truncation)
DatabaseCleaner.clean
generate_admin_contact_fields
load '/Users/work/Work/work/app/models/contact.rb'
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
这似乎有效,但它不会重新加载,它会加载两次。 所以我得到了很多警告,比如
WARN -- : Overwriting existing field content_seen in class Contact.
WARN -- : Overwriting existing field content_sent in class Contact.
WARN -- : Overwriting existing field url_c4c in class Contact.
WARN -- : Creating scope :is_valid_contact. Overwriting existing method Contact.is_valid_contact.
WARN -- : Creating scope :email_exists. Overwriting existing method Contact.email_exists.
您知道更好的解决方案吗?有点像reload!
的东西吗?
感谢