2010-04-14 8 views

risposta

8

DataMapper è progettato per l'utilizzo multi-database.

È possibile impostare più repository semplicemente dicendo qualcosa come DataMapper.setup(:repository_one, "mysql://localhost/my_db_name").

DataMapper poi tiene traccia di tutti i repository che avete predisposto un hash che è possibile fare riferimento e utilizzare per scoping:

DataMapper.repository(:repository_one){ MyModel.all }

(L'ambito predefinito solo di essere DataMapper.repository, che è possibile impostare dicendo DataMapper.setup(:default, "postgres://localhost/my_primary_db") o simili)

+0

La documentazione ufficiale è disponibile su http://datamapper.org/docs/misc.html. Se non si specifica un contesto/repository, prende il valore ': default'. Dovresti almeno avere un tale contesto. –

2

Personalmente preferisco Sequel per tutti i miei ORM e gli accessi al database di base ed è quello che uso con Sinatra/Padrino e in qualsiasi altro momento ho bisogno di accedere a un database al di fuori di Rails.

Ho usato DataMapper ma ho sentito che Sequel era più semplice e flessibile, ma forse è proprio così che funziona la mia mente. ActiveRecord è OK da solo, ma penso che funzioni meglio in combinazione con Rails.

Quale è "migliore"? Penso che sia soggettivo e per lo più sia legato a come funziona il tuo cervello.

5

Sembra che sia possibile utilizzare database diversi nella maggior parte degli ORM. Per DataMapper guarda la risposta della teoria. Per Sequel si può passare gestore di database per il modello:

class Tag < Sequel::Model(db) 
end 

dove db è aperto database. Per ActiveRecord è possibile utilizzare il metodo establish_connection.