2012-07-30 17 views
0

這段代碼究竟有什麼問題?以及如何運行此代碼? 請對我進行徹底的解釋,因爲我是紅寶石新手。請幫忙!!!已經創建了一個數據庫,並且我試圖將它連接到我的模型並僅通過模型執行SQL查詢。該怎麼辦?

my_connection_base.rb

類MyConnectionBase <的ActiveRecord ::基地

客戶= Mysql2 :: Client.new(:主機=> 「本地主機」,:數據庫=> 「flipkart_project_development」:表= > 「用戶」,:用戶名=> 「flipkart_project」:密碼=> 「爲mypass」)

結果= client.query( 「SELECT * FROM用戶」)

放導致

+0

原樣,這個問題是無法理解的。請提供更多的上下文,你想做什麼,這是一個軌道應用程序(你標記爲軌道)?就目前而言,這段代碼沒有什麼意義。也許你應該先閱讀一些教程... – niels 2012-07-30 10:25:47

+0

我已閱讀教程。是的,這是一個rails應用程序。在這裏有這個模型my_connection_base.rb,我做了一個名爲flipkart_project的數據庫。我在這個模型的用戶表上運行了一個查詢「SELECT * FROM users」,並將其放入結果中。我想顯示結果中獲取的行。怎麼做?我知道遷移和東西,但我需要在我所做的方法中做到這一點。需要你的幫助!! – 2012-07-30 10:29:44

回答

0

在Rails你不需要寫一個原始的SQL查詢。

只需將所有數據庫配置放置在config/database.yml文件中,如下所示。

development: 
    adapter: mysql2 
    database: flipkart_project_development 
    username: flipkart_project 
    password: yourpass 
    pool: 5 
    timeout: 5000 
test: 
    adapter: mysql2 
    database: flipkart_project_test 
    username: flipkart_project 
    password: yourpass 
    pool: 5 
    timeout: 5000 

production: 
    adapter: mysql2 
    database: flipkart_project_production 
    username: flipkart_project 
    password: yourpass 
    pool: 5 
    timeout: 5000 

Rails將負責建立連接並執行查詢。

在你的情況下生成一個型號命名爲用戶

rails g model user 

在你的項目,你可以獲取所有用戶像下面。

User.all 
#This will generate the SQL query "select * from users" 
#and will return the records as user objects. 

請看migrations

+0

:非常感謝您的回答。但是我知道關於遷移和database.yml配置的一切。在情況下,當我已經給所有有關主機,表,數據庫等 客戶= Mysql2 :: Client.new(信息:主機=> 「本地主機」,:數據庫=> 「flipkart_project_development」:表=>「用戶「,:username =>」flipkart_project「,:password =>」mypass「) 爲什麼不能連接到提到的數據庫並使用我提供的查詢獲取數據?爲什麼? – 2012-07-30 10:46:19

+0

Rails是根據約定而不是配置的原則構建的。在Rails中,約定是你不建立你自己的查詢。如果你真的想要,你可以這樣做,但作爲新手用戶,你不應該這樣做。只要按照慣例。如果你真的想這樣做,你最好不要使用rails,並嘗試像Sinatra。 – niels 2012-07-30 12:16:35

0

給出的代碼很難按需執行:它將在模型加載時執行。它應該被放置在一個方法:

class MyConnectionBase < ActiveRecord::Base 
    def some_method 
    client = Mysql2::Client.new(:host => "localhost", :database => "flipkart_project_development", :table => "users" , :username => "flipkart_project", :password => "mypass") 
    results = client.query("SELECT * FROM users") 
    puts results 
    end 
end 

這可能然後在您的控制器與MyConnectionBase.some_method調用。但爲什麼你想這樣做,完全避開了我。完成Rails的所有方式會更好(請參閱上面的註釋)。

相關問題