Ruby on Rails:是否可以使用驼峰大小写数据库字段和表名



数据库表名和字段名的Ruby on Rails约定是snake_case而不是CamelCase。但是,我有一个PHP应用程序正在使用的现有数据库。我想写一个与这个数据库交互的Rails应用程序。是否有一种简单的"Rails方式"来使用CamelCase数据库表和字段名与数据库进行交互?

简短的回答是肯定的,但这并不总是比将旧数据库迁移到新数据库更容易。如果你希望两个应用程序能够使用相同的数据库,那么这可能是最快捷的方法。

您可以通过以下操作重写表和外键字段:

set_table_name "camelCaseName" 
set_primary_key "cameCaseIdName" 

如果有必要,您还可以别名所有字段名:

alias "camelCaseFieldName", "field_name"

所有的AR关系也可以设置主键字段。

has_many :comments, :foreign_key_id => "commentCamelCaseID"

当然。在模型中,只需像这样定义表:

class FooBar < ActiveRecord::Base
  self.table_name = "FooBar"
end

对于您可以在迁移或模式中定义的字段名也是如此。你可以指定任何你喜欢的名字。这需要更多的工作,除非你想要覆盖默认机制,但这仍然是可能的:

create_table "products", :force => true do |t|
  t.column "shop_id",    :integer
  t.column "creator_id", :integer
  t.column "name",       :string,   :default => "Untitled"
  t.column "value",      :string,   :default => "Untitled"
  t.column "created_at", :datetime
  t.column "updated_at", :datetime
end

有关更多信息,请参见表定义

对于数据库表名,可以使用set_table_name

  class Dog < ActiveRecord::Base
    set_table_name 'dog'
  end

的字段,您可以覆盖您的访问器。希望有用。再见

最新更新