Консоль 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

конец