如何覆盖 Rails 命名约定?

我有一个模型名为“服装”,我想成为单一(一件衣服)。在默认情况下,Railsf 的复数是衣服。不管是对是错,我认为如果复数是“衣服”会更容易理解。

我怎么覆盖复数变数命名原则?我能在模型里做好吗,这样就不用一遍又一遍地做了?这将如何改变路由的处理方式(我使用的是静息架构) ?

21661 次浏览

我不是 RoR 专家,但找到了 可能的方法。从引用的站点,您可以在 config/initializers/inflections.rb文件中添加变形规则:

# Add new inflection rules using the following format
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'clothing', 'clothes'
end

对于 Rails2.3.2或者2 + ,你需要做一些不同的事情:

ActiveSupport::Inflector.inflections do |inflect|
inflect.plural /^(ox)$/i, '\1\2en'
inflect.singular /^(ox)en/i, '\1'


inflect.irregular 'octopus', 'octopi'


inflect.uncountable "equipment"
end

如果您试图停止数据库多元化,请在 environment.rb文件中添加此内容

ActiveRecord::Base.pluralize_table_names = false

对我来说,使用 Ruby2.2.2 windows 或 linux 的最佳解决方案是:

ActiveRecord::Base.pluralize_table_names = false


class Persona < ActiveRecord::Base
end




personas = Persona.all
personas.each do | personita |
print "#{personita.idpersona}   #{personita.nombre}\n"
end


p Persona.count