使用jsonapi-resources gem(和Rails 4),我试图创建一个单一(或单一)资源(不提供标准显示,更新和删除请求的URL上的id),我的情况是当前(登录)用户的个人资料,所以我可以做一个' GET /个人资料'而不是' GET / profiles /:id'。
我已将单一路由添加到config / routes.rb文件中:
jsonapi_resource:个人资料
根据文件https://github.com/cerebris/jsonapi-resources#jsonapi_resource
那么如何修改资源(ProfileResource)以将id映射到current_user(通过上下文)?
现有的演示应用程序没有演示使用单一资源,并且似乎没有(明确地)解决这个问题的任何文档。
答案 0 :(得分:1)
在您的个人资料资源中,如果密钥是“我”,您可以覆盖self.find_by_key
方法以通过存储在上下文中的用户进行实例化。
对于当前用户,您可以点击/profiles/me
。
def self.find_by_key(key, options = {})
new(options[:context][:current_user], options[:context]) if key == 'me'
end
答案 1 :(得分:1)
有效! (THKS)
对我而言,关键是
config / routes.rb
jsonapi_resource :profile
并在app / resources / profile_resource.rb
中def self.find_by_key(key, options = {})
model = options[:context][:current_user]
fail JSONAPI::Exceptions::RecordNotFound.new(key) if model.nil?
new(model, options[:context])
end
然后点击(GET,PUT,POST,DELETE)' / profile'工作正常。