Domanda

Sto cercando di creare un'app crudo di base su rotaie contro un database di Couchdb ospitato su Nutorant.

Sto usando couch_potato come il mio strato di persistenza e averlo collegato correttamente al mio database nuvoloso.

I problemi che sto avendo è il mio primo modello non vedrà i documenti esistenti nel mio database di Couchdb, a meno che aggiungo un campo ruby_class che equivale al nome del mio modello.

Il mio semplice utente modello:

class User
  include CouchPotato::Persistence

   property :id, :type => Fixnum
   property :FullName, :type => String

   view :all, :key => :FullName
end
.

Campione Couchdb Documento:

{
  "_id": 123456,
  "_rev": "4-b96f36763934ce7c469abbc6fa05aaf3",
  "ORGID": 400638,
  "MyOrgToken": "19fc342d50f9d8df1ecd5e5404f5e5f7",
  "FullName": "Jane Doe",
  "Phone": "555-555-5555",
  "MemberNumber": 123456,
  "Email": "jane@example.com",
  "LoginPWHash": "14a3ccc0e6a50135ef391608e786f4e8"
}
.

Ora, quando utilizzo la mia vista all dalla console dei binari, non ottengo alcun risultato indietro:

1.9.2-p290 :002 > CouchPotato.database.view User.all
=> []
.

Se aggiungo il campo e il valore "ruby_class: User" al documento di Couchdb sopra, quindi ottengo i risultati nella console:

1.9.2-p290 :003 > CouchPotato.database.view User.all
=> [#<User _id: "123456", _rev: "4-b96f36763934ce7c469abbc6fa05aaf3", created_at: nil,       
   updated_at: nil, id: "123456", FullName: "Jane Doe">]
.

Sto lavorando con un ampio set di dati del cliente e non voglio scrivere alcun tipo di script per aggiungere il campo ruby_class a ogni documento (e potrei non essere autorizzato a).

Come posso ottenere la mia app per riconoscere questi documenti di couchdb esistenti senza aggiungere il campo ruby_class?

Non riesco a trovare molta documentazione per Couch_potato e Couchrest che mostra come lavorare con i database di Couchdb esistenti. La maggior parte degli esempi si suppone di iniziare il tuo progetto e il tuo database da zero.

Grazie,

/ floatnspace

È stato utile?

Soluzione

Quando stai guardando la vista all del tuo User vedrai qualcosa come ruby_class == 'User', quindi a meno che non aggiungi questa proprietà ai tuoi documenti dovrai lavorare intorno a ciò che fornisce couch_potato.Potresti I.e. Utilizzare Couch_rest direttamente per recuperare i tuoi documenti, ma non penso che questo sia quello che vuoi.

Se inizi a persistere o aggiornando i propri documenti, Couch_potato aggiungerà comunque il campo ruby_class.Quindi penso che la soluzione Simples sarebbe semplicemente aggiungerle lì.

Un'altra cosa che puoi fare è creare una vista che emette i documenti anche quando non hanno il set di proprietà.Questo approccio funzionerà solo se hai solo un tipo di documento nel tuo couchdb:

if(!doc.ruby_class || doc.ruby_class == 'User') {
  emit(doc);
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top