【发布时间】:2019-07-31 10:30:01
【问题描述】:
我有一个名为 Tasks 的 Rails 模型,它只有一个属性:resource_id。这指的是另一个 Rails 网站上的 Resource(另一个模型)的 ID,该网站在不同的 URL 上运行,具有不同的数据库。
当您请求Resource(例如http://localhost:3020/resources/23.json)时,它会以JSON格式返回资源,例如:
{
"title": "Hello",
"description": "Lorem ipsum..."
}
我希望能够从我当前的 Rails 网站(带有Task 的网站)中引用请求的资源:
# returns a Task with `resource_id: 23`
@task = Task.find(1)
# refers to the Resource from the other Rails server
@task.resource.title
如何让 Rails 在从本地数据库中找到 Task 的同时获取 Resource?
我尝试在task.rb 中创建一个resource 属性,当它被这样调用时请求Resource:
require 'net/http'
class Task < ApplicationRecord
def resource
res = Net::HTTP.get(URI.parse('http://localhost:3020/resources/' + resource_id.to_s + '.json'))
JSON.parse(res)
end
end
但是,每次我都会调用task.resource,这非常慢。我可以只请求一次Resource 并将其存储在某种伪属性中(我不知道它叫什么)吗?
【问题讨论】:
标签: ruby-on-rails activerecord net-http