Ruby On Rails数据库命名约定

时间:2014-02-21 15:12:16

标签: ruby database ruby-on-rails-4 rails-activerecord

在我的公司,我们即将开始第一个Ruby On Rails应用程序,它将有一个新的数据库。我们当前的所有数据库都严格遵守表和列的Upper Camel Case命名约定(即MyNiceTable)。我与Ruby On Rails程序员讨论的结论是,对于这个新的应用程序,我们应该为我们的数据库切换到Snake Case(即my_nice_table)。我从来没有真正得到过为什么的答案,除了它是如何完成的。

由于某些原因,我对此感到不舒服。首先,它不符合我们现有的惯例。其次,这意味着我们正在根据应用程序设计/编程语言选择进行数据库设计,我们强烈希望避免这种情况。最后,用其他语言编写的其他应用程序很可能在将来也会使用这个数据库,那么为什么我们只为这个应用程序改变我们的约定呢?对我来说不应该是必要的。我的意思是,如果我们使用的是无法更改的现有数据库会怎么样?

但我被告知,由于Active Record的工作原理,如果我们使用蛇案,会更容易。我们在这里对ROR不熟悉,所以我们也不想让事情变得更加复杂。

那么,真相是什么?是否有任何理由,除了“这通常是如何完成的”,我们需要我们的数据库使用蛇案而不是上骆驼案?如果有原因,是否可以通过其他手段轻松克服?

由于

2 个答案:

答案 0 :(得分:2)

You're right when you said Snake Case is the convention。但是,在我提供的参考页面上,它也会告诉您how to override the naming conventions。这是一个代码示例,直接来自网站:

class Product < ActiveRecord::Base
  self.table_name = "PRODUCT"
end

答案 1 :(得分:1)

我真的相信框架只是您使用的工具,没有别的。 Rails是众所周知的,因为它的#34;自以为是&#34;做事的方式,但我会建议你的公司不要扭曲业务或设计决策因为一个工具。

如果您的公司有惯例或您的技术团队制定了设计决策,那么您不应该让框架弄乱它们,如果这样,它就不适合您使用。 Rails可以根据命名惯例进行自定义而不会有太多麻烦,因此对于您的具体情况,这不是问题。

我总是试图特别提醒Ruby开发人员(有许多人在学习如何在Ruby中编写代码之前学会使用Rails)我们主要是软件开发人员(或软件工程师,无论如何)而不是Rails开发人员,或者Sinatra开发人员或[把框架名称放在这里]开发人员。

最好使用具有约定的框架,易于使用,扩展和维护良好,如Rails。但是,将自己放在考虑整体Web应用程序设计的一种方式并不好。

无论如何,我找到了一个专门用来改变&#34; snake_case&#34; Rails中的数据库约定。我认为这可能会有所帮助:

Ruby on Rails: Is it possible to use Camel-cased database field and table names?