2010-01-30 92 views
4

不确定下划线(student_state)和表格大小(student_states)之间的差别是多少。但是,不知道如何以不同的方式使用 。显然,你可以使用tableize参考 数据库中的表名。但是,下划线提供了哪些不同的功能,例如,当您看到以下情况时:student_state相比:用作符号时的student_states。感谢您的建议。轨道中的表格和下划线之间的区别

回答

10

tableize将复数化您的字符串,无论原始单数还是复数,而underscore只会添加下划线。

虽然这可能看起来微不足道,但都是关于从开发人员处抽取数据库实现的细节。如果在这条路上,Rails开始以不同的方式格式化表名,唯一需要更改的方法是tableize。引用表名的Rails代码中的所有其他地方可以保持不变,因为它们仍然调用tableize方法。因此,轨道底层结构的改变受到限制,损害程度要小得多。

这在计算机科学中被称为“正交性”。现在你知道它是什么意思了,试着把它放在谈话中,让自己看起来更聪明。它对我有用吗? :)

+0

是否有任何不同的功能?例如,表名应该是复数。该表格将映射到具有相同名称但以单数形式的Model对象。是否有理由随时调用复数形式和其他单数化的东西? – JohnMerlino 2010-01-30 12:58:51

+0

例如,如果您有一个名为StudentState的模型,并且您使用了下划线Student_State,然后将Student_States分页。你用前者调用方法,后者用数据库检索吗? – JohnMerlino 2010-01-30 13:28:02

+0

其实,它会是“student_states”小写。下划线方法都是下划线和下划线,因为它实际上与camelize相反,它会将下划线字符串转换为“camelcase”。如果您刚接触rails,则不需要关注这些方法,因为它们用于元编程。例如,如果你正在编写一个插件,你可能需要将一个类名转换为一个表名,等等。 – 2010-01-30 16:37:59