2016-04-25 63 views
2

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

我已经添加到config/routes.rb中文件中的奇异路径:

jsonapi_resource:型材

按照文件https://github.com/cerebris/jsonapi-resources#jsonapi_resource

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

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

回答

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

这是行得通! (THKS)

关键对我来说是

的config/routes.rb中

jsonapi_resource :profile 

,并在应用程序/资源/ 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'工作正常。