2013-05-13 2 views
1

У меня есть база данных sqlite3 с 3 таблицами, которая имеет в качестве первичного ключа столбец id, но не имеет created_at или update_at столбцов.Как конвертировать существующую базу данных sqlite в Rails?

Я хочу использовать его в приложениях Rails3. Как я могу правильно преобразовать его в «базу данных Rails»?

+0

Вам не обязательно иметь эти столбцы. Если они отсутствуют, Rails просто не использует их. –

ответ

0

Напишите переход, чтобы добавить эти два поля в таблицу (ы).

Например,

Командная строка что-то вроде script/generate migration add_timestamps_to_user

Затем отредактируйте миграции и поставить два поля там.

например.

def change 
    add_column :users, :created_at, :date 
    add_column :users, :updated_at, :date 
end 

Кроме того, убедитесь, что внешние ключи находятся в формате othertablename_id и если нет, то рассмотреть вопрос о переименовании их с rename_column миграции.

+0

Спасибо. Есть ли быстрый способ скопировать данные из данных в базу данных rails. Я знаю, как написать сценарий, чтобы «вручную» сделать это. Но мне интересно, есть ли лучший способ? – aztack

+0

Когда вы говорите, вы имеете в виду существующий? База данных останется той же самой базой данных sqlite3, даже если доступ осуществляется из рельсов. –

1

Похоже, вы хотите, чтобы одно приложение-рельсы обращалось к двум различным базам данных? Вам, вероятно, понадобится сделать две вещи:

  • Вам нужно будет подключить ваше приложение к двум различным базам данных. Ваша «настоящая» база данных и sqlite3 db
  • После того, как вы сможете успешно подключиться к обеим БД, вам может потребоваться настроить модели и переопределить некоторые стандартные соглашения об именах Rails.

Для первого элемента, вы можете следить за этим: Connecting Rails 3.1 with Multiple Databases

Для второго пункта, если таблицы не следовать по пути Railsy именования их, вы можете могли бы создать модель, которая выглядит примерно так это:

# app/models/foo.rb 
class Foo < ActiveRecord::Base 
    establish_connection "your_sqlite_connection_name_#{Rails.env}" 
    self.table_name = "name_of_table_in_sqlite_db" 
end 
Смежные вопросы