Ruby on Rails: возможно ли использовать поля базы данных и имена таблиц в Camel - PullRequest
3 голосов
/ 28 апреля 2011

Соглашение Ruby on Rails для имен таблиц и полей базы данных - это snake_case, а не CamelCase. Тем не менее, у меня есть существующая база данных, используемая приложением PHP. Я хотел бы написать приложение Rails, которое взаимодействует с этой базой данных. Существует ли простой "способ Rails" для взаимодействия с базой данных с использованием таблицы базы данных CamelCase и имен полей?

Ответы [ 3 ]

2 голосов
/ 28 апреля 2011

Краткий ответ - да, но это не всегда проще, чем перенести старую базу данных в новую.Если вы хотите, чтобы оба приложения могли использовать одну и ту же базу данных, возможно, это самый быстрый подход.

Вы можете переопределить поля таблицы и внешнего ключа, выполнив следующие действия:

set_table_name "camelCaseName" 
set_primary_key "cameCaseIdName" 

При необходимости можно также присвоить псевдонимы всем именам полей:

alias "camelCaseFieldName", "field_name"

Все отношения AR также могут устанавливать поле первичного ключа.

has_many :comments, :foreign_key_id => "commentCamelCaseID"

Это больше работычем обычно, но это возможно.

0 голосов
/ 28 апреля 2011

для имени таблиц баз данных вы можете использовать set_table_name

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

для поля, в котором вы можете переопределить свой метод доступа.надеюсь быть полезным.прощай

0 голосов
/ 28 апреля 2011

Конечно. В вашей модели просто определите свою таблицу следующим образом:

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

Для получения дополнительной информации см. Таблица определений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...