Rails未初始化的常量名称错误

时间:2018-02-21 14:31:39

标签: ruby-on-rails

我一直收到这个错误:

NameError (uninitialized constant Character::Messagemissife):
uninitialized constant Mime::HTML

错误来自这一行:

if @character.messagemissives

character.rb

has_many :messagemissives, dependent: :destroy

messagemissive.rb

class Messagemissive < Missive
  self.table_name = 'messagemissives'
  belongs_to :character      
end

missive.rb

class Missive < ActiveRecord::Base
  self.abstract_class = true
end

我有一个班级Messagemissive,但不是Messagemissife。当然,它看起来像一个拼写错误。但我无法找到&#34; Messagemissife&#34;我的任何文件中的任何地方。我在Sublime Text 2中使用了Find功能,我使用了Mac Finder搜索,我已经清除了缓存,我已经多次重启服务器了,我已经多次重启计算机。这个错误仍然不会消失。我做错了什么?

1 个答案:

答案 0 :(得分:2)

由于rails的默认命名约定,您会看到此行为。当您致电@character.messagemissives时,rails实际上正在寻找一个模型,其中包含相应的单数字Messagemissife而不是Messagemissive。您可以输入左"Messagemissives".singularize进行确认 在rails控制台中,它将返回"Messagemissife" 要解决此问题,您可以提及类名为

的类名称
has_many :messagemissives,  class_name: 'Messagemissive'

或如上所述[{3}},在/config/initializers/inflections.rb中,只需添加

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'messagemissive', 'messagemissives'
end

希望这会有所帮助。