模型的名称包含'缓存'

pet*_*han 4 ruby-on-rails models

在我的代码中,我有一个名称包含字符串'cache'的模型.例如:

class DataCache < ActiveRecord::Base
Run Code Online (Sandbox Code Playgroud)

而表名是data_caches.当我跑:

"data_caches".classify.constantize.new
Run Code Online (Sandbox Code Playgroud)

要初始化模型,我得到一个这样的错误:

NameError: uninitialized constant DataCach
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我期待"DataCache",但得到了"DataCach".

Har*_*tty 5

看看Rails 中的Inflections类.将以下文本添加到config/initializers/inflections.rb类中:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'cache', 'caches'
end
Run Code Online (Sandbox Code Playgroud)

现在在rails控制台中试用这个词:

>> "caches".singularize
=> "cache"
>> "cache".pluralize
=> "caches"
Run Code Online (Sandbox Code Playgroud)