Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在jsonapi资源中创建单一资源_Ruby On Rails_Singleton_Jsonapi Resources - Fatal编程技术网

Ruby on rails 在jsonapi资源中创建单一资源

Ruby on rails 在jsonapi资源中创建单一资源,ruby-on-rails,singleton,jsonapi-resources,Ruby On Rails,Singleton,Jsonapi Resources,使用jsonapi resources gem(和Rails 4),我试图创建一个单一(或单例)资源(不在url上为标准的显示、更新和删除请求提供id),在我的例子中是针对当前(登录)用户的配置文件,因此我可以执行“GET/profiles”而不是“GET/profiles/:id” 我已将单一路由添加到config/routes.rb文件中: jsonapi_资源:配置文件 根据文件 那么如何修改资源(ProfileResource)以将id映射到当前用户(通过上下文) 现有的演示应用程序没有

使用jsonapi resources gem(和Rails 4),我试图创建一个单一(或单例)资源(不在url上为标准的显示、更新和删除请求提供id),在我的例子中是针对当前(登录)用户的配置文件,因此我可以执行“GET/profiles”而不是“GET/profiles/:id”

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

jsonapi_资源:配置文件

根据文件

那么如何修改资源(ProfileResource)以将id映射到当前用户(通过上下文)


现有的演示应用程序没有演示如何使用单一资源,而且似乎也没有任何文档(明确)说明这一点

在您的配置文件资源中,您可以重写self.find_by_key方法,如果键是“me”,则通过存储在上下文中的用户进行实例化。 对于当前用户,您可以点击
/profiles/me

def self.find_by_key(key, options = {})
  new(options[:context][:current_user], options[:context]) if key == 'me'
end
真管用!(厚度)

对我来说,关键是

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
然后点击(获取、放置、发布、删除)“/profile”就可以了