我正在编写一个库来使用Active Resource(4.0.0)来使用API。 API将嵌套资源作为URL返回,而不是对象数组。
例如,当我使用Parent
加载ActiveResource::Base
对象(Parent.find(1)
后代)时,我得到类似于以下内容的JSON响应:
"parent": {
"username": "alex",
"children": "http://domain.com/parents/alex/children"
}
假设我有一个名为ActiveResource::Base
的另一个Children
子类,如何通过请求提供的Parent
实例数组来访问此Children
对象的子项儿童网址?我会帮你的:
class Parent < ActiveResource::Base
def children
# HALP
# (super returns the children url as a string)
end
end
答案 0 :(得分:1)
您可以为:from
指定#find
参数:
class Parent < ActiveResource::Base
# ...
def children
Child.find(:all, from: URI(super).path)
end
end
但是:它只允许您更改路径,而不是完整的URL。如果资源URL的主机部分可能发生更改,则还必须更改资源的site
。