1

我有一個現有的遠程MySQL數據庫,我試圖訪問從我的Rails應用程序我有這個在我的database.yml 發展:無法訪問MySQL模式在軌控制檯

development: 
    adapter: mysql2 
    encoding: utf8 
    database: mydb 
    username: myusername 
    password: [email protected]#$%@! 
    host: IP for my DB 
    port: 3306 
    pool: 5 
    socket: /tmp/mysql.sock 
    timeout: 5000 

當我在我的Rails控制檯運行以下命令

ActiveRecord::Base.connection.tables

它列出所有可用的表,但是當我試圖訪問它給了我下面的錯誤模型:

City 
NameError: uninitialized constant City from (irb):12 
    from /home/shreyas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
    from /home/shreyas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
    from /home/shreyas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

任何建議我做錯了什麼?我想要訪問我的應用程序中的遠程數據庫,但至今尚未創建任何模型。我是否需要創建所有模型?我可以在我的schema.rb文件中看到完整的數據庫結構。

+0

看起來並不像一個MySQL錯誤,表明您的模型 – ahmet

+0

這不是一個MySQL的錯誤,當我嘗試訪問的表我的數據庫。像城市是表名,所以當我嘗試訪問city.first或任何東西時,它會顯示上述錯誤。 –

+0

我可以看到你的城市模型 – ahmet

回答

2

對於在控制檯中,您可以編寫

rails g model City 
代碼

它將爲您創建城市模型。正如你所說,你有現有的表,所以你不需要上述語法生成的遷移。所以你應該從db/migrate中刪除生成的遷移。

或者你可以做一件事,只需在應用/模型中添加city.rb文件即可。然後添加代碼

class City < ActiveRecord::Base 
    # if your table name is cities, then you don't need to do any thing. 
    # if your table name is something else rather than cities then place the following commented code 
    # self.table_name = 'your_existing_city_table_name' 

    # then you have to add columns of the table as attr_accessible. for e.g. you have name, state_id in there 
    attr_accessible :name, :state_id 
end 

希望它會爲你工作:)

+0

@BachanSmuthy我沒有按照步驟在我的數據庫中表的名稱是城市(小案例),但是當我嘗試訪問城市它說城市(表不'如果我使用城市,它會給我同樣的錯誤。 :( –

+1

您是否在City模型中添加了self.table_name ='city'? –

+0

如果您不介意,您可以將問題upvote;)並且如果可以幫助,我還有一個問題在我的que中http://stackoverflow.com/questions/17185439/huge-json-object-to-excel –

0

您當然可以在您的mysql數據庫中訪問您的數據,但要將其用作對象表示,您需要創建與您的數據關聯的model

class City < ActiveRecord::Base 
end 

這樣ActiveRecord會做的,以「鏈接」你的對象到數據庫中數據的(假設模型名稱是否正確,在這裏你應該有一個名爲cities表)爲您的辛勤工作。

然後,您將能夠從鐵軌控制檯

City.all 

獲取城市有關ActiveRecord的更多信息,請參閱http://guides.rubyonrails.org/active_record_querying.html

+0

那麼如何在我的應用程序中添加現有的模型。我沒有遷移,但我可以看到我的schema.rb文件中的所有表結構。並且由於錯誤,我已經通過運行rake db清除了數據庫:schema:load –

+0

不確定要理解。如果您的數據庫已經填滿了數據,只需像上面顯示的那樣添加ruby類(創建文件並粘貼代碼),以便能夠通過ruby和活動記錄訪問您的數據。但是,在某些時候沒有遷移可能會成爲一個問題。例如,當你的生產服務器上推你的代碼... –