Рельсы, организующие папки для сервисных объектов
Я пытаюсь создать сервисный объект, чтобы извлечь несколько методов из product.rb
Модель AR, но по какой-то причине я не могу загрузить новую TwitterShare
учебный класс. Когда я бью консоль и пытаюсь что-то вроде Product.last.twitter_share_text
я получил NameError: uninitialized constant Product::TwitterShare
ошибка.
Что здесь происходит? Как мне организовать свои папки / файлы? Нужно ли указывать рельсы службам автозагрузки? Вот текущий код:
приложение / модели /product.rb
class Product < ActiveRecord::Base
def twitter_share_text
TwitterShare.new(name: self.name, oneliner: self.oneliner).return_text
end
приложение / услуги /twitter_share.rb
class TwitterShare
attr_reader .........
def initialize....
end
1 ответ
Вы должны позволить rails
знать, где можно найти TwitterShare
,
Добавьте следующее к вашему application.rb
config.autoload_paths << "#{Rails.root}/app/services"
а затем перезапустите console
или же server
,
rails
теперь должен быть в состоянии найти twitter_share.rb
и загрузить TwitterShare
правильно.
Обратитесь к Автозагрузке и Перезагрузке Константы для получения дополнительной информации.