在我的代码中,我有一个模型,其名称包含字符串“缓存”。例如:
class DataCache < ActiveRecord::Base
表名是data_caches
. 当我运行时:
"data_caches".classify.constantize.new
初始化模型,我收到这样的错误:
NameError: uninitialized constant DataCach
为什么这不起作用?我期待“DataCache”,但得到了“DataCach”。
在我的代码中,我有一个模型,其名称包含字符串“缓存”。例如:
class DataCache < ActiveRecord::Base
表名是data_caches
. 当我运行时:
"data_caches".classify.constantize.new
初始化模型,我收到这样的错误:
NameError: uninitialized constant DataCach
为什么这不起作用?我期待“DataCache”,但得到了“DataCach”。
看看 Rails 中的Inflections类。将以下文本添加到config/initializers/inflections.rb
类中:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'cache', 'caches'
end
现在在 rails 控制台试一下这个词:
>> "caches".singularize
=> "cache"
>> "cache".pluralize
=> "caches"
在这种情况下,您应该帮助 rails 了解如何将单数转换为复数。尝试config/initializers/inflections.rb
使用此名称进行更新。我认为它应该可以解决问题。