Admin::ResidentsController#destroy Rails 中的名称错误
NameError in Admin::ResidentsController#destroy Rails
当我使用 active admin
删除驻留模型对象时出现名称错误
我有常驻模特:
class Resident < ActiveRecord::Base
has_many :leaves,dependent: :delete_all
end
第二个是离开模型:
class Leave < ActiveRecord::Base
belongs_to :resident
end
给我以下 error:
也rails误读了leave名字,改为leafe..所以我重命名或重构文件:
decorators/leafe_decorator.rb 到 decorators/leave_decorator.rb
在装饰器测试中类似。
现在我再次在我的整个代码中搜索 Leafe 关键字,但它不存在。并且仍然得到 error 。我该怎么办?
远景,但这可能与 Rails 试图 "smart" 关于模型名称复数化有关(比如能够将 'Person' 复数化为 'People')。
在这种情况下,我认为 Rails 期望模型是 Leaf:
class Leaf < ActiveRecord::Base
belongs_to :resident
end
关联(和 table 名称)为 leaves
:
class Resident < ActiveRecord::Base
has_many :leaves, dependent: :delete_all
end
这是因为 Rails 的综合复数规则为单词 "leaves" 产生了错误的单数(无论如何应该是 "leaf")
您可以只更改您的模型以匹配预期的单词 "leafe" 或者您可以教 Rails 正确的单数形式。
要做到这一点,只需将其添加到初始化程序中即可:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'leave', 'leaves'
end
您的初始化程序目录中应该已经有一个名为 inflections.rb
的文件,其中记录了各种其他 Rails 变形特征。
这样您的原始代码应该可以工作,而无需重命名任何文件或模型。
当我使用 active admin
删除驻留模型对象时出现名称错误我有常驻模特:
class Resident < ActiveRecord::Base
has_many :leaves,dependent: :delete_all
end
第二个是离开模型:
class Leave < ActiveRecord::Base
belongs_to :resident
end
给我以下 error:
也rails误读了leave名字,改为leafe..所以我重命名或重构文件: decorators/leafe_decorator.rb 到 decorators/leave_decorator.rb
在装饰器测试中类似。
现在我再次在我的整个代码中搜索 Leafe 关键字,但它不存在。并且仍然得到 error 。我该怎么办?
远景,但这可能与 Rails 试图 "smart" 关于模型名称复数化有关(比如能够将 'Person' 复数化为 'People')。
在这种情况下,我认为 Rails 期望模型是 Leaf:
class Leaf < ActiveRecord::Base
belongs_to :resident
end
关联(和 table 名称)为 leaves
:
class Resident < ActiveRecord::Base
has_many :leaves, dependent: :delete_all
end
这是因为 Rails 的综合复数规则为单词 "leaves" 产生了错误的单数(无论如何应该是 "leaf")
您可以只更改您的模型以匹配预期的单词 "leafe" 或者您可以教 Rails 正确的单数形式。
要做到这一点,只需将其添加到初始化程序中即可:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'leave', 'leaves'
end
您的初始化程序目录中应该已经有一个名为 inflections.rb
的文件,其中记录了各种其他 Rails 变形特征。
这样您的原始代码应该可以工作,而无需重命名任何文件或模型。