こんにちは、私はrunescape項目のモデルを作成しようとしています。 apiとhttpartyを使用しています。私にはいくつかの問題があります。しかし、これは引数の数が間違っていると言って、initializeメソッドをオーバーライドすることの使用に関するものです。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
だからレールコンソールで、私はそれをテストするには、次のコマンドを実行します。
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つの引数を取ります。それを1に減らすと、それは4が必要だと言います。それは私を非常に混乱させてしまいます。
私は基本的な初期化をオーバーライドすることが、このようなことをする方法であることは確かでもありません。だからあなたが良いアイデアを持っているなら、私はこれについて新しいことを教えてください。
結論として、なぜ私のオブジェクトが正しく作成されていないのですか?第二に、これはオブジェクトを作成するための正しいアプローチですか?
比較的近くを取得する必要があります私は本当にすべてでデータベースにこのデータを保存する必要がいけません。しかし、私がする必要があるのは、いくつかのチェックをもう一度実行し、それに対していくつかの数学をすることだけです。だから問題を解決して間接的に私の質問に答えて削除する! – Morphasis
@Morphasisは仲間を歓迎する。 – Sean
私が助けることができるルビーまたはosrsに関して他に何かがあるかどうか教えてください:) – Sean