2013-11-14 55 views
0

我有一個的has_many跨多個數據庫去,例如指定用sqlite3的數據庫名稱:使用時self.table_name

class Foo 
    establish_connection :database1 
    has_many :bars 
end 

class Bar 
end 

正常情況下的東西都還好..美孚使用數據庫1和酒吧使用了Rails環境數據庫(根據database.yml)。不幸的是,協會被打破:

Table 'database1.bars' doesn't exist 

我讀過幾個地方在線,我需要用專門self.table_name=指定數據庫名稱。 SQLite3似乎沒有數據庫名稱,但?我想做

self.table_name = '<something>.bars' 

在我的酒吧模型。這可能與SQLite3?

+0

那麼,你有沒有機會嘗試我的建議?它有用嗎? – dic19

回答

1

默認情況下,SQLite會創建一個名爲main的數據庫,並附加到.db文件中。所以,你可以嘗試參考main數據庫,如下所示:

ATTACH DATABASE正式文件的第二段
self.table_name = 'main.bars' 

更多信息。

注:不知道是否會在紅寶石的工作我只是試圖直接在源碼如下:

D:\sqlite3>sqlite3 test.db 
SQLite version 3.7.17 2013-05-20 00:56:22 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> CREATE TABLE User(user_id INTEGER PRIMARY KEY,name VARCHAR); 
sqlite> INSERT INTO User(name) VALUES('dic19'); 
sqlite> INSERT INTO User(name) VALUES('Logan Serman'); 
sqlite> SELECT * FROM User; 
1|dic19 
2|Logan Serman 
sqlite> .databases 
seq name    file 
--- --------------- ---------------------------------------------------------- 
0 main    D:\sqlite3\test.db 
sqlite> SELECT * FROM main.User; 
1|dic19 
2|Logan Serman 
sqlite> 

使用.databases命令你可以得到附加的數據庫中的所有名稱和文件的列表:

.databases    List names and files of attached databases 

截圖

enter image description here