0

複数のデータベースにまたがる has_many があります。次に例を示します。

class Foo
  establish_connection :database1
  has_many :bars
end

class Bar
end

通常の状況では問題ありません。Foo は database1 を使用し、Bar は Rails 環境データベースを使用します (database.yml による)。残念ながら、関連付けは壊れています:

Table 'database1.bars' doesn't exist

でデータベース名を具体的に指定する必要があるオンラインの場所をいくつか読みましたself.table_name=。SQLite3 にはデータベース名がないようですが? やりたい

self.table_name = '<something>.bars'

私のバーモデルで。これは SQLite3 で可能ですか?

4

1 に答える 1

1

デフォルトでは、SQLite は attach mainto .dbfile という名前のデータベースを作成します。mainしたがって、次のようにデータベースを参照することができます。

self.table_name = 'main.bars'

詳細については、ATTACH DATABASE公式ドキュメントの 2 番目の段落を参照してください。

注: Rubyで動作するかどうかはわかりません。次のようにsqliteで直接試しました:

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

スクリーンショット

ここに画像の説明を入力

于 2013-11-14T21:36:33.450 に答える