Substituir o método buildURL para incluir o ID do modelo pai

Em relação a dados de brasa e subclasse DS.RESTAdapter a substituirbuildURL.

Eu tenho dois pontos finais. Vamos dizer que são:

example.com/users/user-id
example.com/users/user-id/images

Substitua "ID do usuário" pelo ID do usuário real.

Então, eu tenho dois modelos:

App.User = DS.Model.extend
    images: DS.hasMany 'image',
        async: true
        inverse: 'user'

App.Image = DS.Model.extend
    user: DS.belongsTo 'user',
        async: true
        inverse: 'images'

No entanto, a carga útil de/users/user-id pontos finais não retornam os IDs da imagem. Eu não tenho controle sobre isso (é uma API de terceiros).

Portanto, preciso fazer uma solicitação separada para / users / user-id / images. Estou subclassificando DS.RESTAdapter para especificar o URL:

App.ImageAdapter = DS.RESTAdapter.extend
    buildURL: (type, id) ->
        # need to return "/users/user-id/images"
        # but need to get the value of user-id somehow

A partir da rota, como eu passaria o ID do usuário para a loja para que ele pudesse chamar obuildURL no adaptador customizado com o ID do usuário?

App.UserRoute = Em.Route.extend
    afterModel: (model) ->
        # how to provide value of `model.get 'id'` to store/adapter/buildURL?
        # do I even do that here?
        promise = @get('store').find 'image'
        @controllerFor('images').set 'model', promise

Eu acho que posso fornecer um hash parafind e pularbuildURL completamente. MasfindQuery é um método privado. Existe uma maneira mais preferida de fazer isso?

App.UserRoute = Em.Route.extend
    afterModel: (model) ->
        promise = @get('store').find 'image', userId: model.get 'id'
        @controllerFor('images').set 'model', promise

App.ImageAdapter = DS.RESTAdapter.extend
    findQuery: (store, type, query) ->
        imagesURL = "#{@host}/users/#{query.userId}/images"
        delete query.userId
        @ajax(imageURL, 'GET', { data: query });

questionAnswers(1)

yourAnswerToTheQuestion