2016-04-03 2 views
1

Я получаю ошибку имени, когда я удаляемый объект модели жителя, используя активный администраторNameError в администраторе :: ResidentsController # уничтожить Rails

У меня есть резидентная модель:

class Resident < ActiveRecord::Base 
    has_many :leaves,dependent: :delete_all 
end 

И второй один является отпуск модель:

class Leave < ActiveRecord::Base 
    belongs_to :resident 
end 

дает мне следующее ошибки:

error that I am getting while deleting resident

Также рельсы неправильно оставить имя и изменил его Leafe .. поэтому я переименовал или реструктурировать файлы: декораторы/leafe_decorator.rb к декораторы/leave_decorator.rb

аналогично в испытаниях декоратора.

Теперь я снова просмотрел весь мой код для Leafe Ключевое слово, но его там нет. И все же получение этого ошибка. Что мне делать ?

ответ

4

Это происходит потому, что интегрированный правила плюрализации Rails дают неправильное значение для слова «листья» (которое должно быть «листом») в любом случае)

Вы можете просто изменить свои модели в соответствии с ожидаемым w ord "leafe", или вы можете научить Rails правильной единственной форме.

Чтобы сделать это, просто добавьте в инициализаторе:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'leave', 'leaves' 
end 

Там уже должен быть файл с именем inflections.rb в каталоге инициализаторов, какие документы различные другие Рельсы функции перегибов.

Таким образом, ваш исходный код должен работать без переименования каких-либо файлов или моделей.

+0

спасибо ... это сработало: D! –

0

Длинный снимок, но это может быть связано с Rails, пытающимся быть «умным» относительно плюрализации имен моделей (например, возможность плюрализировать «Личность» как «Люди»).

В этой ситуации, я думаю, что Rails будет ожидать, что модель будет Leaf:

class Leaf < ActiveRecord::Base 
    belongs_to :resident 
end 

и ассоциации (и имя таблицы), чтобы быть leaves:

class Resident < ActiveRecord::Base 
    has_many :leaves, dependent: :delete_all 
end 
+0

но ключевым словом является LEAFE дополнительный 'E' –

+0

в 'rails console',' 'person" .pluralize' => '" people "и' "leave" .pluralize' => '" leaves "' , Кроме того, ': delete_all' должен быть': destroy'? – 7urkm3n

+0

, тогда мне нужно было бы переименовать все файлы, которые я изменил из leafe, чтобы оставить тоже? –

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

  • Нет связанных вопросов^_^