嗨,我試圖創建一個runescape項目的模型。使用那裏api和httparty。我有很多問題。但是這個是關於使用覆蓋初始化方法的說法,它說明它的參數數量是錯誤的。Rails 5模型初始化錯誤的參數數量?
class Item < ApplicationRecord
require 'json'
include HTTParty
base_uri 'http://services.runescape.com/m=itemdb_oldschool/'
attr_accessor :name, :description, :price, :icon_url
def initialize(name, description, price, icon_url)
super
self.name = name
self.description = description
self.price = price
self.icon_url = icon_url
end
def self.find(name)
response = get("/api/catalogue/detail.json?item=#{name}")
if response.success?
parsed = JSON.parse(response)
self.new(
parsed["item"]["name"],
parsed["item"]["description"],
parsed["item"]["current"]["price"],
parsed["item"]["icon_large"]
)
else
# this just raises the net/http response that was raised
raise response.response
end
end
end
所以在導軌控制檯I運行下面的命令,以測試它:
item_test = Item.find( 「227」)
ArgumentError: wrong number of arguments (given 4, expected 0..1)
from /Users/jacksharville/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.1/lib/active_record/core.rb:312:in `initialize'
from /Users/jacksharville/Desktop/OSCRUDDY/app/models/item.rb:13:in `initialize'
from /Users/jacksharville/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
但初始化需要4個參數。當它減少到一個然後它說它需要4.這讓我很困惑。
我甚至不確定覆蓋基礎初始化是如何做這樣的事情。所以,如果你有更好的主意,請讓我知道我是新手。
總之我的問題是爲什麼我的對象沒有被正確創建?其次,這是創建對象的正確方法嗎?
說實話我真的不要求這些數據都保存到數據庫中。但是我所要做的就是再次執行一些檢查,並對它進行一些數學運算。所以刪除解決了這個問題間接回答了我的問題,謝謝! – Morphasis
@Morphasis歡呼隊友。 – Sean
讓我知道如果你有任何關於紅寶石或osrs的東西,我可以幫忙:) – Sean