2013-03-07 112 views
3

我在學習Ruby的早期階段。我真的不知道如何使用現有的充滿表和ruby數據的數據庫。每一篇指南,我在互聯網上找到或找到的每篇文章都會使用遷移功能創建一個新文章。在Ruby on Rails中使用現有的SQL Server數據庫

但是,哪些是在RoR上使用SQL服務器中的現有數據庫的步驟?

回答

8

你很幸運,朋友。我的第一個Rails項目(7年前)反對可怕的建立SQL Server數據庫。

根據以上所述,您需要適當地設置您的database.yml。但是對於現有的數據庫來說,顯然表和列名不太可能符合Rails慣例。好消息是,您可以覆蓋所有這些默認設置。下面是這些指令的非詳盡列表:

在模型從AR :: Base的下降,

set_table_name 'actual_table_name'
set_primary_key 'actual_primary_key_name'

在各種協會的相關法令(HAS_ONE ,has_many,belongs_to),還有:用於指定外鍵名稱的foreign_key鍵。

現在,MS SQL Server允許您執行哪個TERRIBLE的事情之一是您可以將空格嵌入列名稱中。不用擔心,您仍然可以使用write_attribute(「嚴重命名的列」)和read_attribute(「嚴重命名的列」)按名稱引用這些列。您也可以參考他們的各種指令,像這樣:

validates_length_of「傳真號碼」:最大=> 17:allow_nil =>真

最後,你可能指的是隱含的方法,這些過分地命名列產生像這樣:

self.send(「傳真號碼=」,new_fax_number)

很顯然,你不能把它們稱爲符號,因爲空間在Ruby中的符號不​​允許。

祝你好運,下次我希望你能用真正的RDBMS,如Informix :)來工作。

+0

爲什麼這個錯誤是發生ODBC ::錯誤:S0002(208)[微軟] [ODBC SQL Server驅動程序] [SQL服務器]無效的對象名稱 – chinchu 2013-03-07 10:18:01

+0

我不你知道你在做什麼時想做什麼? – 2013-03-07 19:33:11

0

首先,您必須將您的應用程序設置爲用戶數據庫連接的sql server。 您必須使用寶石SQL服務器在您的寶石文件並必須相應地設置database.yml文件。

的database.yml,在配置文件夾把名字相同的數據庫在這個文件中的發展的一部分。

development: 
    adapter: 
    database: db_name_dev 
    username: 
    password: 
    host: localhost 
    socket: 
0

使用現有的服務器。在您的database.yml中,您必須指定主機,端口和數據庫名稱。

`database: <host>:<port>/<database_name>` 

對於如

development: 
    adapter: mysql2 
    database: your.mysqlserver.com:1521/project_database 
    username: project_user 
    password: project_password