2013-05-13 57 views
1

我有一个sqlite3数据库有3个表,它有id列作为主键,但没有created_atupdate_at列。如何将现有的sqllite数据库转换为Rails的数据库?

我想在Rails3应用程序中使用它。 如何正确地将其转换为'Rails数据库'?

+0

你不必拥有这些列。如果他们错过了,Rails根本就不会使用它们。 – 2013-09-04 08:51:05

回答

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 2013-05-13 00:27:35

+0

当你说退出你是指现有的?即使访问来自rails,数据库仍将保持与sqlite3数据库完全相同。 – 2013-05-13 00:44:45

1

这听起来像你想要一个单一的rails应用程序访问两个不同的数据库?您可能需要做两件事:

  • 您需要将您的应用连接到两个不同的数据库。您的“真实”数据库和sqlite3数据库在成功连接到两个数据库之后,您可能需要设置模型并覆盖一些默认的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