Admin :: ResidentsController中的NameError#destroy Rails

时间:2016-04-03 07:50:18

标签: ruby-on-rails ruby activerecord activeadmin activemodel

使用活动管理删除常驻模型对象时出现名称错误

我有常驻模特:

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

此外,rails错误解释 保留 名称并将其更改为 leafe ..所以我重命名了或重构的文件: decorators / leafe_decorator.rb decorators / leave_decorator.rb

类似于装饰器测试。

现在我再次通过我的整个代码搜索 Leafe 关键字,但它不存在。仍然得到 错误 。我该怎么办?

2 个答案:

答案 0 :(得分:5)

这是因为Rails的综合多元化规则对于单词&#34; leaves&#34; (无论如何应该是&#34; leaf&#34;

您可以更改模型以匹配预期的字词&#34; leafe&#34;或者你可以教Rails正确的单数形式。

要做到这一点,只需将其添加到初始化程序:

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

初始化程序目录中应该有一个名为inflections.rb的文件,该文件记录了各种其他Rails变形功能。

这样您的原始代码就可以工作,而无需重命名任何文件或模型。

答案 1 :(得分:0)

远景,但这可能与Rails有关,试图对于多元化模型名称“聪明”(比如能够将'Person'复数为'People')。

在这种情况下,我认为Rails会期望模型是Leaf:

class Leaf < ActiveRecord::Base
  belongs_to :resident
end

并且关联(和表名称)为leaves

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