2013-02-08 3 views
2

У меня есть модель с именем Engine, и я могу использовать ее в просмотрах и контроллерах без проблем. Проблема возникает, когда я использую ее в модели (например, в обратных вызовах или даже простых методах экземпляра).Является ли двигатель зарезервированным словом в Rails?

#inside the vehicle model 
def add_engines 
    Engine.all.each do |ngin| 
    ... 

end 

Я получаю ошибку: NoMethodError: undefined method 'all' for #<Some_mounted_engine_name:0x00000103b48828>

Я поиск в Интернете, но я не вижу Двигатель как зарезервированное слово. Обратите внимание, что мы используем смонтированные двигатели в нашем приложении.

+0

Я думаю, что какой-то драгоценный камень, который вы используете, может определить класс 'Engine'. Это проблема только в модели «Vehicle»? – codeit

+0

нет, любая модель в главном или главном приложении, которая хочет ссылаться на двигатель, имеет ошибку. – RailinginDFW

+0

Можете ли вы просто открыть консоль рельсов и попробовать 'Engine.new' .. что он дает? – codeit

ответ

3

Я думаю, что вы сталкиваетесь с проблемами в Ruby. Попробуйте ::Engine вместо Engine - вы, вероятно, неявно ссылаетесь на Rails::Engine

+0

да, этот сохранен в день. Итак, для дальнейшего понимания, почему работают Views и Controllers, но не Модели? – RailinginDFW

+2

Это немного сложно ответить наверняка, но где-то модуль/класс 'Engine' был включен в список включенных модулей модели (скорее всего, с помощью суперкласса). Отслеживание там, где менее прямолинейно. Чтобы сориться, попробуйте взглянуть на 'YourModelClass.included_modules' и посмотреть, что в области – Nevir

Смежные вопросы