Ruby on rails 在Rails中存储json api调用

Ruby on rails 在Rails中存储json api调用,ruby-on-rails,activerecord,httparty,json-api,Ruby On Rails,Activerecord,Httparty,Json Api,我构建了一个使用json api的应用程序。我从我的应用程序中删除了活动记录,因为api中的数据理论上可以更改,我不想每次都删除数据库 现在,我为每个类提供了一个名为self.all的方法,该方法通过json创建ruby对象。然后,我在各种函数中调用该方法,以便处理查找总和和百分比的数据。这一切都很好,但似乎有点慢。我想知道是否应该在某个地方存储我的.all调用,而不是为每个处理数据的方法实例化新对象 ...response was assign above using HTTParty...

我构建了一个使用json api的应用程序。我从我的应用程序中删除了活动记录,因为api中的数据理论上可以更改,我不想每次都删除数据库

现在,我为每个类提供了一个名为self.all的方法,该方法通过json创建ruby对象。然后,我在各种函数中调用该方法,以便处理查找总和和百分比的数据。这一切都很好,但似乎有点慢。我想知道是否应该在某个地方存储我的.all调用,而不是为每个处理数据的方法实例化新对象

...response was assign above using HTTParty...

def self.all
    puppies = []
    if response.success?
      response['puppies'].each do |puppy|
        accounts << new(puppy['name'],
                        puppy['price'].to_money,
                        puppy['DOB'])
      end
    else
      raise response.response
    end
    accounts
  end

  # the methods below only accept arguments to allow testing with Factories
  # puppies is passed in as Puppy.all

  def self.sum(puppies)
    # returns money object
    sum = Money.new(0, 'USD')
    puppies.each do |puppy|
      sum += puppy.price
    end
    sum
  end

  def self.prices(puppies)
    prices = puppies.map { |puppy| puppy.price }
  end


  def self.names(puppies)
    names = puppies.map { |puppy| puppy.name }
  end

  ....many more methods that take an argument of Puppy.all in the controller....
…上面使用HTTParty分配了响应。。。
def self.all
小狗=[]
如果你成功了?
回应[“小狗”]。每个都有|小狗|

accounts我猜发生的是,每次调用任何类方法时,您都在向HTTParty发出请求。您可以考虑创建响应的类变量和称为ExIPRESIAT的类变量。然后你可以做一些基本的缓存

@@expires\u at=Time.zone.now
@@http_响应
def make_http_调用
如果@expires\u在.pass续订\u http\u响应?
结束
def renew_http_响应
#在此处发出HTTParty请求
@@http#U响应=#HTTParty响应
@@从现在起在=30.5分钟时过期
结束
#在代码中,将响应更改为@@response
#成功?致@@response.success?

这些都在内存中,如果重新启动服务器,您将丢失所有内容。如果您想要更健壮的缓存,最好研究一下

如果您愿意使用Postgres作为数据存储,您可以利用它们的JSON数据类型。更多信息请点击此处: