2014-09-02 7 views
5

Utilizzo Rails 4.1 e PostgreSQL e sto utilizzando lo foreigner gem per creare vincoli di chiave esterna. Ma ho qualche problema con fixtures.Come lavorare con i test e gli impianti in un database con contorni di chiave esterna in Rails?

quando ho eseguito:

spring rake test 

ho avuto errori come il seguente:

ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: update or delete on table "pessoas" violates foreign key constraint "pacientes_pessoa_id_fk" on table "pacientes" 
DETAIL: Key (id)=(980190962) is still referenced from table "pacientes". 
: DELETE FROM "pessoas" 

ho trovato una soluzione: ricreare il database:

RAILS_ENV=test spring rake db:reset && spring rake test 

ho la qualche tipo di errori quando provo a seminare il database di sviluppo con le fixture usando rake db:fixture:load.

Ho già provato a modificare l'ordine di caricamento del dispositivo in test_helper.rb, ma non è stato sufficiente.

Qualcuno sa come risolverlo? Ho cercato molto nel web e non ho trovato una soluzione.

+0

Qualche progresso con questo? –

+0

È possibile eseguire più script rake allo stesso tempo 'RAILS_ENV = test spring rake db: reset test' – zeeraw

risposta

2

Quindi, so per certo che funziona, anche se non posso dire che sia un vero e proprio lavoro corretto.

È necessario rendere l'utente un SUPERUSER.

Nel mio caso, utilizzando Cloud 9, l'utente che ho effettuato l'accesso è "ubuntu".

inserisco sudo -u postgres psql (in realtà sudo due volte per C9 per accedere correttamente) e digitare:

ALTER ubuntu UTENTE SUPERUSER;

Esci e funzionerà.

Se si esegue tail log/test.rb è possibile visualizzare un PG :: InsufficientPrivlege: ERROR quando si esegue il test di integrazione, quindi l'utente non dispone di diritti sufficienti. Non vorrai farlo in produzione, ma la mia produzione è su Heroku, quindi sono bravo.

Problemi correlati