私はdatamapperでsinatraを使用しており、複数のデータベースに接続して同じアプリのロジックごとに使用したいと考えています。
app.rb などのファイルでデータマッパー設定を定義しています。
#Default database
dm = DataMapper.setup :default, {
:adapter => 'mysql',
:path => 'dsfsdf',
:username => 'sdf2r',
:password => '234wer',
:host => 'f3rwefwe'
}
#Logrecord database
lrdm = DataMapper.setup :logrecdm, {
:adapter => 'mysql',
:path => 'dsf34',
:username => 't4h6',
:password => '56erg',
:host => 'g45gfg'
}
#my database
mdb = DataMapper.setup :mydb, {
:adapter => 'mysql',
:path => 'dsf34',
:username => 't4h6',
:password => '56erg',
:host => 'g45gfg'
}
# Here I include all my model files.
DataMapper.finalize
xyz テーブルに対応する最初のモデル ファイル (xyz_db.rb) で、このテーブルはデフォルトのデータ ストア :default にあります。
class xyz
include DataMapper::Resource
property :id, Serial
property :created_at, DateTime
end
2 番目のモデル ファイル (userlogrecord_db.rb) は、userlogrecords テーブルに対応し、そのテーブルは他のデータ ストア :logrecdm にあります。
class userlogrecord
include DataMapper::Resource
property :id, Serial
property :content, Text, :required => true
property :created_at, DateTime
property :updated_at, DateTime
end
私の3番目のモデルファイル(abc_db.rb)は、abcに対応し、そのテーブルは他のデータストア:mydbにあります
class abc
include DataMapper::Resource
is :reflective
reflect
end
app.rb を実行すると、最初のモデル (xyz_db.rb) はデフォルトでデフォルトのデータストアを使用します。しかし、2 番目と 3 番目のモデルについては、それぞれ :logrecdm と :mydb データ ストアに生成する必要があります。これを実現するには、2 番目と 3 番目のモデルにどのような変更を加える必要がありますか? 3 番目のデータ ストア (:mydb) では、dm-reflective を使用しています。http://datamapper.org/docs/misc.htmlを見てきましたが、実際には役に立ちません。どんな助けでも大歓迎です。