Hallo, ich versuche ein Modell für ein Runencape-Objekt zu erstellen. Verwenden Sie dort API und httparty. Ich habe eine Reihe von Problemen. Aber diese bezieht sich auf die Verwendung der Initialisierungsmethode, die besagt, dass sie die falsche Anzahl von Argumenten hat.Modell Rails 5 Falsche Anzahl von Argumenten initialisieren?
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
So in Schienen-Konsole ausführen i den folgenden Befehl, es zu testen:
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'
Aber die initialize dauert 4 Argumente. Wenn es auf eins reduziert wird, dann sagt es, dass es 4 erfordert. Was mich sehr verwirrt.
Ich bin nicht einmal sicher, dass das Überschreiben der Basisinitialisierung der Weg nach vorne ist, um so etwas zu tun. Wenn Sie also eine bessere Idee haben, lassen Sie mich bitte wissen, dass ich neu bin.
Abschließend ist meine Frage warum wird mein Objekt nicht korrekt erstellt? Zweitens ist dies der richtige Ansatz zum Erstellen des Objekts?
Um ehrlich zu sein ich wirklich überhaupt nicht benötigen diese Daten in einer Datenbank zu speichern. Aber alles, was ich tun muss, ist, ein paar Kontrollen gegen die API zu machen und etwas Mathe dagegen zu machen. Also das Entfernen, das das Problem indirekt gelöst hat, hat meine Frage dankend beantwortet! – Morphasis
@ Morphisis Prost Mate. – Sean
Lass es mich wissen, wenn du etwas anderes über Ruby oder Osrs hast, mit dem ich helfen kann :) – Sean