Ho riscontrato un problema con l'esecuzione delle mie migrazioni in una nuova app per i binari (3.2.3). Stiamo usando postrgres 9.1.3 e - pg (0.13.2) -Gli ambiti del modello stanno rompendo il rake db: migrate - rails 3.2.3 postgres 9.1.3
Quando eseguo rake db: creare, quindi rake db: migrate, ottengo ->
1.9.3-p194 (master) rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
PG::Error: ERROR: relation "roles" does not exist
LINE 4: WHERE a.attrelid = '"roles"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"roles"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
ottengo questo anche senza alcuna migrazione definita, quindi non credo che sia un problema con le migrazioni stesse. Quando guardo lo stack trace, vedo che gli ambiti definiti nel mio modello User sono in esecuzione - quando li commento, le migrazioni vengono eseguite senza problemi.
scope :team_leaders, where(role_id: Role.where(name: 'Team Leader').first.try(:id))
scope :area_leaders, where(role_id: Role.where(name: 'Area Leader').first.try(:id))
scope :nation_leaders, where(role_id: Role.where(name: 'Nation Leader').first.try(:id))
scope :employees, where(role_id: Role.where(name: 'Employee').first.try(:id))
Si tratta di un errore nei binari o sto facendo qualcosa di sbagliato? Apprezzerei molto l'aiuto: possiamo rimuovere l'uso di questi ambiti attraverso l'app, ma questo è qualcosa che vorremmo evitare.
Devo inserire questi ambiti all'interno di una sorta di condizionale che viene richiamato quando le guide vengono caricate nella console o come server ma non durante le migrazioni?
Grazie mille,
Dan Sowter
Sembra che la tabella dei ruoli non sia stata creata nel db: create. Esiste una migrazione per il ruolo? Stai usando un plugin di ruolo come acl9 o role_requirement? Se è così, assicurati di non perdere un generatore che deve essere eseguito. –
Si potrebbe anche voler provare a racchiudere gli ambiti causando problemi in una lamda in modo che non vengano valutati fino a quando non vengono effettivamente utilizzati. –