У меня проблемы с пространством имен модуля, который я включаю в модель.
в /app/models/car.rb
class Car
include Search::Car
end
в /lib/search/car.rb
module Search
module Car
include ActiveSupport::Concern
# methods in here
end
end
в /config/application.rb
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.autoload_paths += Dir["#{config.root}/lib/search/*"]
Странно то, что я не получаю никаких ошибок напрямую, когда запускаю сервер.
Но если я обновлю браузер через некоторое время, я получу эту ошибку:
Expected #{Rails.root}/lib/search/car.rb to define Car
Природа проблемы указывает на то, что она имеет отношение к:
/ конфигурации / среда / development.rb
config.cache_classes = false
Я также попытался поместить файл search.rb
непосредственно в /lib
, где я определяю Search
:
module Search
# Put shared methods here
end
Что я делаю не так?
UPDATE:
Хорошо, получается, что если я переименую Search::Car
в Search::CarSearch
, это сработает.
Разве нельзя иметь модули / классы с одинаковыми именами в другом объеме?