ActiveRecord 如何从单数(类)和复数(表)推断映射;是否可以覆盖?

发布于 2024-10-07 09:10:54 字数 482 浏览 6 评论 0原文

例如,ActiveRecord 如何从单数(类)和复数(表)推断映射:

People = Person
Ducks = Duck
Geese = Goose 
Categories = Category

在概念上似乎是一个好主意,但不知道我是否必须映射单数(类)和复数(表)实例,或者 ActiveRecord 是否是这样做是多么“神奇”。另外,当必须对名称进行复数化时,这似乎可能会导致更多的开销,而这不仅仅是添加“s”那么简单。

注意:将此问题的第二部分移至此处:ActiveRecord 是否使用命名约定“ID”为每个表分配一个键,如果是,为什么?

How does ActiveRecord infer mapping from singular (class) and plural (table) for example:

People = Person
Ducks = Duck
Geese = Goose 
Categories = Category

Seems like a nice idea in concept, but no idea if I have to map the singular (class) and plural (table) instances, or if ActiveRecord is some how "magically" doing this. Plus, seems like this might lead to more overhead when having to pluralize a name that's not as simple as just adding "s".

NOTE: Moved the second part of this question here: Does ActiveRecord assign a key to every table using the naming convention “ID”, and if so, why?

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

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

发布评论

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

评论(1

睡美人的小仙女 2024-10-14 09:10:54

Rails 使用 ActiveSupport::Inflector 来跟踪单词以及如何更改它们。例如,Rails 会知道将 UserPreference 存储在 user_preferences 中。

您还可以将您的一种变形添加到变形器中,以处理添加 s 没有意义的更奇怪的情况。

在 /config/initializers/inflections.rb 中,您将获得以下内容:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural /^(ox)$/i, '\1en'
  inflect.singular /^(ox)en/i, '\1'
  inflect.irregular 'person', 'people'
  inflect.uncountable %w( fish sheep )
end

http://api.rubyonrails.org/classes/ ActiveSupport/Inflector.html

Rails uses the ActiveSupport::Inflector to keep track of words and how to change them. For example, Rails will know to store UserPreference in user_preferences

You can also add your one inflections to the inflector to handle weirder cases where adding an s does not make sense.

In /config/initializers/inflections.rb you get the following:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural /^(ox)$/i, '\1en'
  inflect.singular /^(ox)en/i, '\1'
  inflect.irregular 'person', 'people'
  inflect.uncountable %w( fish sheep )
end

http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html

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