Почему я не могу создать экземпляр созданного мной класса в папке app / decorator для моего проекта rails в консоли? - PullRequest
3 голосов
/ 17 июня 2020

Я создал папку и файл

decorators/my_model_decorator.rb 

и в нем создал класс

require 'delegate'

class MyModelDecorator < SimpleDelegator
  attr_reader :my_model

  def initialize(my_model)
    @my_model = my_model
  end

  def containable
    ContainableDecorator.new(my_model.containable)
  end
end

Но ссылаясь на него так:

instance_x = MyModel.new

decorated_my_model = MyModelDecorator.new(instance_x)

Выдает эту ошибку

NameError (uninitialized constant MyModelDecorator)

(Как ни странно, я могу запустить код в браузере, и сообщение об ошибке знает о классе декоратора, и я могу получить доступ к его методам в консоли браузера.)

Почему у меня такое поведение? Нужно ли мне что-то делать для «инициализации» созданного мной класса?

в соответствии с этой статьей think.co

"Вы увидите эту ошибку, когда код ссылается на класс или модуль, который он не может найти , часто потому, что код не включает require, который указывает файлу Ruby загрузить класс. "

Я этого не совсем понимаю. Вы должны сказать Rails, что где-то требуется MyModleDecorator? Если да, то есть ли какое-то конкретное место, где я должен поместить этот код?

...