2

使用 jsonapi-resources gem(和 Rails 4),我试图创建一个单数(或单例)资源(不为标准显示、更新和删除请求提供 url 上的 id),在我的情况下用于配置文件当前(登录)用户,所以我可以做一个'GET /profiles'而不是'GET /profiles/:id'。

我已将单数路由添加到 config/routes.rb 文件:

jsonapi_resource:配置文件

根据文档https://github.com/cerebris/jsonapi-resources#jsonapi_resource

那么如何修改资源(ProfileResource)以将 id 映射到 current_user(通过上下文)?

现有的演示应用程序没有演示使用单一资源,并且似乎没有任何文档(明确)解决这个问题。

4

2 回答 2

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
于 2016-04-26T23:32:08.900 回答
1

这样可行!(谢谢)

对我来说关键是

配置/路由.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' 工作正常。

于 2016-04-27T21:34:54.850 回答