postgresql
  • devise
  • ruby-on-rails-5
  • 2016-06-12 41 views 3 likes 
    3

    我試圖設置一個新的 Rails 5應用程序(ruby 2.3.1,rails 5.0.0.rc1)與postgresql,制定的寶石,它是無法運行rails db:seed由於以下錯誤:Rails 5 - PG :: UndefinedTable:錯誤:關係「application_records」不存在

    PG::UndefinedTable: ERROR: relation "application_records" does not exist 
    LINE 8:    WHERE a.attrelid = '"application_records"'::r... 
                 ^
    /Users//.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `async_exec' 
    /Users/foo/.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `block in query' 
    /Users/foo/.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:566:in `block in log' 
    /Users/foo/.rvm/gems/[email protected]/gems/activesupport-5.0.0.rc1/lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
    /Users/foo/.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:560:in `log' 
    /Users/foo/.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:87:in `query' 
    /Users/foo/.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql_adapter.rb:739:in `column_definitions' 
    /Users/foo/.rvm/gems/[email protected]/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:227:in `columns' 
    

    多的谷歌搜索後,我意識到,這事做與ApplicationRecord base class change in rails 5。顯然,沒有名爲application_records的表,因此active_support不應該在尋找它。我已經檢查了app/models/application_record.rb存在並且有正確的內容。此外,用戶模型(這是目前我的應用程序的唯一模式)擴展ApplicationRecord預期:

    class User < ApplicationRecord 
        # Include default devise modules. Others available are: 
        # :confirmable, :lockable, :timeoutable and :omniauthable 
        devise :database_authenticatable, 
         :recoverable, :rememberable, :trackable, :validatable 
    end 
    

    rails db: migrate運行良好,但rails db:seed上述錯誤扼流圈。

    任何人都可以闡明什麼可能導致這一點?

    application_record.rb內容:

    class ApplicationRecord < ActiveRecord::Base 
        self.abstract_class = true 
    end 
    
    +0

    你的'application_record.rb'文件的內容是什麼? –

    +0

    將application_record.rb的內容添加到問題 –

    +1

    謝謝。我創建了一個示例5.0 RC應用程序,但無法重現此問題。我會建議在Rails問題跟蹤器上打開一個問題 - https://github.com/rails/rails/issues/ - 將示例應用程序上傳到Github,它重現了問題。在Github問題上標記爲@ prathamesh-sonpatki。謝謝。 –

    回答

    1

    回答我的問題,所以它可以幫助其他人遇到類似的問題。

    由於在rails issue通過文件檔案@PrathameshSonpatki,出現這種情況是因爲userstamp gem注入上ActiveRecord::Base而非ApplicationRecord關係。 (請注意,在撰寫本文時,userstamp gem與rails 5不兼容)。

    如果您還沒有與軌道5測試寶石,你會得到其中active_support去尋找一個表中的問題稱爲application_records,檢查的寶石之一,你正在使用的ActiveRecord::Base類關係內噴射。基於this blog postApplicationRecord的目的是爲了避免全局注入ActiveRecord::Base。因此,您需要查找與Rails 5兼容的此類gem版本,或者修補此類gem以將必要行爲注入ApplicaitonRecord而不是ActiveRecord::Base

    +0

    我想知道追蹤破壞我們的應用程序的寶石的最佳方式是什麼。我們有幾百個,用戶密碼不在那裏。 – lzap

    相關問題