如何覆盖 Rails 命名约定?

发布于 2024-07-29 07:23:23 字数 188 浏览 9 评论 0原文

我有一个名为“clothing”的模型,我想将其作为单数(一件衣服)。 默认情况下,rails 表示复数是“clothings”。 无论对错,我认为如果复数是“衣服”,会更具可读性。

如何覆盖复数命名约定? 我可以在模型中正确执行此操作,从而不必一遍又一遍地执行此操作吗? 这将如何改变路由的处理方式(我正在使用宁静的架构)?

I have a model named "clothing" which I want to be the singlular (one piece of clothing). By default, rails says the plural is clothings. Right or wrong, I think it will be more readable if the plural is "clothes".

How do I override the plural naming convention? Can I do it right in the model so I don't have to do it over and over? How will this change how routes are handled (I am using restful architecture)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

魔法少女 2024-08-05 07:23:23

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

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

I'm no RoR expert, but did find a possible approach. From the referenced site you can add inflection rule inside the config/initializers/inflections.rb file:

# Add new inflection rules using the following format 
ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'clothing', 'clothes'
end
向地狱狂奔 2024-08-05 07:23:23

对于 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

For rails 2.3.2 and maybe 2+, you need to do it a little different:

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
临走之时 2024-08-05 07:23:23

如果您试图阻止数据库复数化,请将其添加到您的 environment.rb 文件中

ActiveRecord::Base.pluralize_table_names = false

Add this in your environment.rb file if you are trying to stop database pluralization

ActiveRecord::Base.pluralize_table_names = false
一个人的旅程 2024-08-05 07:23:23

对于我来说,使用 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

With Ruby 2.2.2 windows or linux for me best solve was :

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文