新しいレールアプリ(3.2.3)でマイグレーションを実行する際に問題が発生しました。 PG(0.13.2) - - 私たちは、postrgres 9.1.3を使用している私がすくいデシベルを実行するとモデルスコープが壊れているrake db:migrate - rails 3.2.3 postgres 9.1.3
を:作成し、その後、DB熊手: - >
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
私もこれを取得移行し、私が取得します移行が定義されていないため、移行自体に問題はないとは思いません。スタックトレースを見ると、Userモデルで定義されたスコープが実行されていることがわかります。私がコメントアウトすると、問題なく移行が実行されます。
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))
これはレールのバグですか、間違っていますか?私は本当にいくつかの助けに感謝します - 私たちはアプリ全体でこれらのスコープの使用を削除することができますが、これは避けたいものです。
これらのスコープは、コンソールに、またはサーバーとしてレールがロードされているが、マイグレーション中にロードされていないときに呼び出す必要がありますか?私は正確に同じ問題を抱えていた
おかげで非常に多く、
ダンSowter
db:createにロールテーブルが作成されていないように見えます。役割の移行はありますか? acl9やrole_requirementのようなロールプラグインを使用していますか?その場合は、実行する必要のある発電機がないことを確認してください。 –
スコープをラッピングしてラムダで問題が発生するようにして、実際に使用されるまで評価されないようにすることもできます。 –