Привет, я пытаюсь создать модель для элемента runescape. Использование там api и httparty. У меня есть ряд проблем. Но это касается использования переопределения метода инициализации, говорящего, что у него неправильное количество аргументов.Rails 5 model Инициализировать неправильное количество аргументов?
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'
Но Initialize принимает 4 аргумента. Когда уменьшите его до одного, тогда он говорит, что ему требуется 4. Который оставляет меня очень смущенным.
Я даже не уверен, что переопределение базовой инициализации - это путь вперед, чтобы сделать что-то вроде этого. Поэтому, если у вас есть лучшая идея, пожалуйста, дайте мне знать, что я новичок в этом.
В заключение мой вопрос: почему мой объект не создается правильно? Во-вторых, это правильный подход для создания объекта?
Чтобы быть честным, я действительно не требуют, чтобы сохранить эти данные в базу данных на всех. Но все, что мне нужно сделать, это запустить некоторые проверки снова api и сделать некоторые математики против него. Так что удаление, которое разрешило проблему, косвенно ответили на мой вопрос, спасибо! – Morphasis
@Morphasis приветствует помощника. – Sean
Сообщите мне, если у вас есть что-то еще относительно рубина или osrs, с которыми я могу помочь :) – Sean