我遇到一個問題,在一個新的Rails應用程序(3.2.3)上運行我的遷移。我們使用postrgres 9.1.3和 - 皮克(0.13.2) -型號範圍正在打破耙分貝:遷移 - 軌道3.2.3的Postgres 9.1.3
當我運行耙分貝:創建,然後耙分貝:遷移,我得到 - >
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
我得到這個連沒有定義任何遷移,所以我不認爲這是遷移本身的問題。當我查看堆棧跟蹤時,我發現我的用戶模型中定義的作用域正在運行 - 當我將它們註釋掉時,遷移運行沒有問題。
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說
貌似表不是在數據庫創建的角色:創建。是否有角色遷移?你正在使用像acl9或role_requirement這樣的角色插件嗎?如果是這樣,請確保您沒有錯過需要運行的發電機。 –
您可能還想嘗試在lamda中包裝引起問題的範圍,以便在實際使用之前不對其進行評估。 –