我一直收到这个错误:
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搜索,我已经清除了缓存,我已经多次重启服务器了,我已经多次重启计算机。这个错误仍然不会消失。我做错了什么?
答案 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
希望这会有所帮助。