[Rails 4]您好。我正在創建一個web應用程序。這是Rails 4.此外,該項目不使用ActiveRelations或數據庫。然而,它正在處理一個預先存在的M $ _SQL DB,我使用我發現的名爲tiny_tds的gem進行查詢。當從控制器調用方法時,獲取「未初始化的常量」錯誤,但不通過控制檯
我有一個錯誤,我已經變得非常堅持。
基本上,我的模式是「網絡」類,它看起來是這樣的:
應用程序/模型/ network.rb
class Network
include Query #THIS IS MY CONCERN MODULE (SHOWN BELOW)
include ActiveModel::Conversion
include ActiveModel::Validations
extend ActiveModel::Naming
...
def initialize()
@technology = "CDMA"
@sites = []
end
...
def get_sites()
#Custom query - this calls the Query Module
@sites = Query.query_avg(@technology, @s_range, @e_range)
end
...
end
這個類調用我創建並停留在一個模塊/關注文件夾。它依賴於「tiny_tds」gem,這是一個用於查詢M $ _SQL DB的gem。它令人驚訝的效果很好,直到我試圖把它與軌道整合:
應用程序/模型/顧慮/ query.rb
module Query
extend ActiveSupport::Concern
def self.query_avg(tech, s_date, e_date)
q_string = "..." #custom sql string (omitted for brevity)
return execute(q_string) #return to calling class
end
private
def self.execute(sql)
#This is a TinyTds Specific command (where error is seen)
client = TinyTds::Client.new(username: '...', password: '...', host: 'x.x.x.x')
result = client.execute(sql)
results = result.each(:symbolize_keys => true, :as => :array, :cache_rows => true, :empty_sets => true) do |rowset| end
return results
end
end
最後但並非最不重要的,這裏是調用代碼控制器:
應用程序/控制器/ networks_controller.rb
class NetworksController < ApplicationController
def new
@network = Network.new
d1 = Date.new(2014,11,22)
d2 = Date.new(2014,11,30)
@network.date_range(d1,d2)
@network.get_sites
end
現在...上面的代碼(在控制器中)工作良好,當我加載「軌道控制檯」,我在那裏手動輸入。所有的數據都是我想要的。
然而,當我嘗試調用http://localhost:3000/networks/new(即使是空的觀點),我收到以下錯誤在我的瀏覽器:
uninitialized constant Query::TinyTds
...(inside the query.rb module listed above)...
client = TinyTds::Client.new(username: '...', password: '...', host: 'x.x.x.x')
PS。我蘭特捆綁安裝和驗證tiny_tds寶石已安裝。
所有幫助表示讚賞,謝謝!
您需要重新啓動您的服務器, – BroiSatse
OH哇...謝謝,那太簡單了< –