我有一个名为“服装”的模特,我想成为单件(一件衣服)。默认情况下,rails表示复数是衣服。对或错,我认为如果复数是“衣服”,它将更具可读性。
如何覆盖复数命名约定?我可以在模型中做到这一点,所以我不必一遍又一遍地做吗?这将如何改变路由的处理方式(我使用的是宁静的架构)?
答案 0 :(得分:122)
我不是RoR专家,但确实找到了possible approach。从引用的站点,您可以在config/initializers/inflections.rb
文件中添加变形规则:
# Add new inflection rules using the following format
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'clothing', 'clothes'
end
答案 1 :(得分:28)
对于rails 2.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
答案 2 :(得分:5)
如果您尝试停止数据库复数化,请在environment.rb
文件中添加
ActiveRecord::Base.pluralize_table_names = false
答案 3 :(得分:-1)
使用Ruby 2.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