Skip to content

Conversation

@valscion
Copy link
Member

This fixes #80

It seems to be that JR always passes a hash to the relation_name accessors, with the context under key :context

https://github.com/cerebris/jsonapi-resources/blob/v0.9.0/lib/jsonapi/resource.rb#L250

Let's just use that everywhere in jsonapi-authorization, too.

It's a bit odd that JR passes way more information down the same relation_name when in the scope of processor, but that doesn't seem to be important to us. Documentation only refers to fetching the context from the options, and AFAICT, doesn't tell about what else is in the options hash:

http://jsonapi-resources.com/v0.9/guide/resources.html#Options

class BookResource < JSONAPI::Resource
  # Only book_admins may see unapproved comments for a book. Using
  # a lambda to select the correct relation on the model
  has_many :book_comments, relation_name: -> (options = {}) {
    context = options[:context]
    current_user = context ? context[:current_user] : nil
    unless current_user && current_user.book_admin
      :approved_book_comments
    else
      :book_comments
    end
  }
  ...
end

This seems to be the way jsonapi-resources does it. Although, at some
points JR passes way more information down the chain. Unfortunately,
that same information is not available in PunditScopedResource so I'll
just go with what we can get in all the places.

https://github.com/cerebris/jsonapi-resources/blob/5af1f17068b66b0a17b7b69e5db334c640f6f34b/lib/jsonapi/processor.rb#L170-L184
@valscion
Copy link
Member Author

@Justin-Maxwell, could you test this out to make sure that this indeed fixes your problems found in #80? You should be able to install this version by listing jsonapi-authorization like this in your Gemfile:

gem 'jsonapi-authorization', github: 'venuu/jsonapi-authorization', branch: 'fix-context-passing'

@valscion
Copy link
Member Author

valscion commented Sep 4, 2017

Hey @Justin-Maxwell, any chance to test this branch out to see if it fixes your issue?

@valscion valscion merged commit e7c6ae0 into master Sep 12, 2017
@valscion
Copy link
Member Author

I'll just assume that this fixed #80 — this change should make sense either way.

@valscion valscion deleted the fix-context-passing branch September 12, 2017 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

JR lamda relation_name gets broken

1 participant