Консоль Rails: невозможно автонастраивать константу
У меня есть модель Customer_ratings, которая позволяет пользователям оставлять отзывы друг на друге. Веб-приложение работает правильно, и обратная связь собирается, сохраняется и отображается.
Я хотел войти и удалить некоторую обратную связь через консоль rails, но когда я введу Customer_rating.all
, я получаю следующую ошибку:
LoadError: Unable to autoload constant Customer_rating, expected /Users/myapps/app/models/customer_rating.rb to define it
Аналогично, если я вхожу в Customer_rating [0], я получаю:
RuntimeError: Circular dependency detected while autoloading constant Customer_rating
У меня нет этой проблемы при доступе к другим таблицам через консоль.
Что может быть причиной этой проблемы, и почему эта ошибка не позволяет правильной работе Customer_ratings через веб-приложение?
Ответы
Ответ 1
Кажется, что это случай испорченного соглашения об именах.
В соответствии с соглашением об именах Rails
имена файлов должны быть в snake_case
и имена классов в CamelCase
. В вашем сценарии имя файла должно быть customer_rating.rb
, а имя класса должно быть CustomerRating
.
После внесения этих изменений используйте CustomerRating.all
(так как обновленное имя класса CustomerRating
), чтобы получить все рейтинги клиентов. Не используйте Customer_rating.all
.
Ответ 2
Я также хотел бы добавить сценарий этой проблемы, который я нашел для будущей ссылки.
Я запускаю Rails 4.0, и у меня была такая же проблема, но произошло то, что у меня была модель с именем Student внутри student.rb, которая содержалась в папке Student. Сначала я этого не понимал, но имя папки было проблемой. Изменение имени папки для чего-то, кроме имени модели, решило проблему.
Ответ 3
Вам просто нужно изменить имя модуля
Например, если ссылка http://sairam.esy.es/users/customer_rating, тогда
вам нужен контроллер
Module Users
Class RatingController
...
..
def customer_rating
..
..
end
end
конец