2012-06-26 16 views
14

L'app My Rails ha il proprio database MySql (e richiede mysql2 gem) ma ha anche bisogno di connettersi con un database MongoDB esterno per un particolare modello (e quindi ho incluso mongoid e bson_ext nel Gemfile). Ora in cui provo a generare una migrazione per un nuovo modello, mi dice cheImposta connessione database predefinita Rails

$ rails g migration CreateLocations 
     error mongoid [not found] 

Quando ho generato il modello Location comprendeva Documento Mongoid ::, quindi Rails pensa, ovviamente, sta usando il database esterno come il mio primario archivio dati.

databse.yml:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: associalize_development 
    pool: 5 
    username: root 
    password: 
    socket: /tmp/mysql.sock 

mongoid.yml:

development: 
    host: pearl.mongohq.com 
    port: 27019 
    username: asfasdf 
    password: sadfasdf 
    database: app4574678 

test: 
    host: pearl.mongohq.com 
    port: 27019 
    username: asdfadhasdfa 
    password: hadsadfas 
    database: app4574678 

production: 
    host: pearl.mongohq.com 
    port: 27019 
    username: asdfdfsasda 
    password: afdasdfdasdf 
    database: app4574678 

UPDATE modello che utilizza Mongo

class ExternalMongoModel 
    include Mongoid::Document 

    field :title 
    field :long_title 
    field :deal_type 
    field :merchandise_type 
    field :market_id 
    field :market_name 
    field :market_location, type: Array 
    field :featureType 
    field :country_code 
    field :subtitle 
    field :offer_ends_at 
    field :price 
    field :value 
    field :merchant_type 
    field :content 
    field :merchant 

    index(
    [[:division_latlon, Mongo::GEO2D]], background: true 
) 

end 
+0

Una soluzione è commentare "mongoid" nel mio Gemfile, creare ed eseguire le migrazioni, quindi decommentare e fare il rebundle. Ovviamente non legit. – Chris

+0

Si prega di inviare il codice modello pertinente per quello che utilizza MongoDB. –

+0

@DeanBrundage aggiornato – Chris

risposta

24

Aggiungere questo al blocco applicazione nella vostra configurazione /application.rb:

config.generators do |g| 
    g.orm :active_record 
end 

(soluzione trovata here)

17

Se non si desidera modificare il config/application.rb si potrebbe usare questo durante la generazione del modello:

rails generate active_record:migration 

Se si modifica il file di application.rb, per richiamare un generatore mongoid, diciamo per un modello di 'contatti', si potrebbe usare:

rails g mongoid:model contacts 

(solution link)

1

In primo luogo verificare il blocco di sotto è presente nel file di configurazione/application.rb nell'applicazione rotaie

config.generators do |g| 
    g.orm :active_record 
end 

Se si aggiunge poi, oppure è possibile eseguire

rails g active_record:migration 
Problemi correlati