Git Product home page Git Product logo

Comments (10)

remi avatar remi commented on May 27, 2024

Does you User model has a company_id attribute?

from her.

lucaspiller avatar lucaspiller commented on May 27, 2024

No it doesn't, it is just basic information, e.g.:

{
  "id": 54,
  "name": "Luca"
}

In my actual use case (as opposed to this example), the child can belong to multiple parents, so it doesn't make sense to have a single parent_id attribute. Maybe a better example would be Groups which have Users, and Users can belong to multiple Groups.

from her.

remi avatar remi commented on May 27, 2024

Ah I see. Her is indeed calling the request path for each User resource.

In your actual use case, what URL would be called if you call the #save method on a user? PUT /users/:id (because the URL can’t depend on the parent since a user can belong to many parents)? In that case, you’d have to use the resource_path method:

class User
  collection_path "/companies/:company_id/users"
  resource_path "/users/:id"
end

from her.

lucaspiller avatar lucaspiller commented on May 27, 2024

Sorry for the delay, we've been busy busy recently...

Back to the issue, so the actual model in our case is read-only, so we don't need to worry about saving it. However if we did the the example you provided would be correct.

I think for now we'll just add some custom stuff to stop the #inspect method from doing this, in our case it's pretty simple to know what the URL is, so I don't think we need it there.

from her.

remi avatar remi commented on May 27, 2024

I think we could just catch any exceptions when calling request_path here.

class User
  collection_path "/companies/:company_id/users"
end

user1 = User.find(1) # { "id": 1, "name": "Tobias Fünke", "company_id": 2 }
user1.inspect # => #<User(/companies/2/users/1) name="Tobias Fünke">

user2 = User.find(2) # { "id": 2, "name": "Maeby Fünke" }
user2.inspect # => #<User(<unknown path>) name="Maeby Fünke">

That makes sense, right?

from her.

lucaspiller avatar lucaspiller commented on May 27, 2024

That sounds good to me :)

from her.

remi avatar remi commented on May 27, 2024

This commit should fix it. If I take my previous example again:

class User
  collection_path "/companies/:company_id/users"
end

user1 = User.find(1) # { "id": 1, "name": "Tobias Fünke", "company_id": 2 }
user1.inspect # => #<User(/companies/2/users/1) name="Tobias Fünke">

user2 = User.find(2) # { "id": 2, "name": "Maeby Fünke" }
user2.inspect # => #<User(<unknown path, missing `company_id`>) name="Maeby Fünke">

from her.

pusewicz avatar pusewicz commented on May 27, 2024

Great! It's been annoying for a long time ;)

@lucaspiller Can you verify and close the issue?

from her.

remi avatar remi commented on May 27, 2024

@lucaspiller You should not be experiencing the issue with newer versions of her (0.6+). Please upgrade, test again and close this issue 😄 Thanks!

from her.

lucaspiller avatar lucaspiller commented on May 27, 2024

Works perfect, thanks!

from her.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.