我正在構建一個Rails應用程序,其中包含Developer
s,其中有Application
s。開發人員和應用程序都是其內容來自外部API的對象。因此,這些模型都是手寫的,並沒有利用ActiveModel,ActiveResource等。Rails模型與其他模型作爲實例變量
我想確定如何實例化Application對象作爲Developer對象的實例變量。
我有我的Developer.initialize()
函數中下面的代碼:
@apps = Array.new
data['applications'].each do |app|
@apps << Application.new(app)
end
代碼是相當自我解釋。 developer.rb
(這是開發人員定義的地方)和application.rb
(這是應用程序定義的地方)位於app/models
目錄中。我的開發人員控制器通過調用Developer.new
來實例化一個開發人員對象。
do代碼塊內的行產生以下錯誤:
uninitialized constant Developer::Application
app/models/developer.rb:24:in `initialize'
app/controllers/developers_controller.rb:11:in `new'
app/controllers/developers_controller.rb:11:in `show'
所以看起來Rails正在試圖實例化一個開發者::應用,而我想要實例在application.rb
定義的應用程序對象在app/models
目錄中。有沒有辦法做到這一點?
你的代碼不是很Ruby風格;第一部分可能是:'@apps = data ['applications']。map {| app | Application.new(app)}'。 – meagar
不錯!感謝您指出了這一點。我正在學習Ruby和Rails(我最喜歡C/C++),所以我並不總是處在用Ruby編寫事物的最有效方式之上。無論哪種方式,對Application.new(應用程序)的調用給了我這個錯誤,但。 – finiteloop
'Application'可能是Rails中的一個保留名稱空間 - 如果您將其他名稱命名爲模型,問題是否會消失? – MrTheWalrus