嗨,我试图创建一个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