Ich habe ein Problem mit dem Ausführen meiner Migrationen in einer neuen Rails App (3.2.3). Wir verwenden postrgres 9.1.3 und - pg (0.13.2) -Modellbereiche brechen Rake db: migrate - rails 3.2.3 postgres 9.1.3
Wenn ich rake db ausführen: Erstellen, dann db Rake: wandern, ich ->
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
ich das bekommen auch ohne irgendwelche Migrationen definiert zu haben, also glaube ich nicht, dass es ein Problem mit den Migrationen selbst ist. Wenn ich mir den Stack-Trace anschaue, sehe ich, dass Bereiche, die in meinem Benutzermodell definiert sind, ausgeführt werden. Wenn ich sie auszeichne, laufen die Migrationen problemlos.
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))
Ist das ein Fehler in den Schienen, oder mache ich etwas falsch? Ich würde wirklich etwas Hilfe zu schätzen wissen - wir können die Verwendung dieser Bereiche in der App entfernen, aber das möchten wir vermeiden.
Sollte ich diese Bereiche in eine Art von Bedingung setzen, die aufgerufen wird, wenn Schienen in der Konsole oder als Server geladen wird, aber nicht während Migrationen? sehr viel
Danke,
Dan Sowter
Sieht aus, als ob die Rollentabelle nicht in der db: create erstellt wurde. Gibt es eine Migration für Role? Verwenden Sie ein Rollen-Plugin wie acl9 oder role_requirement? Wenn ja, vergewissern Sie sich, dass Ihnen kein Generator fehlt, der ausgeführt werden muss. –
Sie können auch versuchen, die Bereiche, die Probleme in einer Lamda verursachen, zu umhüllen, damit sie erst ausgewertet werden, wenn sie tatsächlich verwendet werden. –