Is it an ok practice to define a resource in your routes file multiple times? 3+ times?

Noobie here. Let's say you have a Post, Comment, and User models. So Post has_many comments, and User has_many comments.

If it good practice to do the following...

    resources :posts do       resources :comments     end

    resources :users do       resources :comments     end

etc?

I have a model in my schema that I believe I will likely have 3 different route resources for.

Or is better to just have the one, such as our first snippet of code above, and then have a param that modifies what is returned, in this example, passing in the user_id to just see comments for that user?

IMO, it can be done either way. If you use routes, it would be a little cleaner when you are using the same resource more than once to make a concern:

concern :commentable do

resources :comments

end

resources :posts, concerns: [:commentable]

resources :users, concerns: [:commentable]

mike2r wrote in post #1149390:

IMO, it can be done either way. If you use routes, it would be a little cleaner when you are using the same resource more than once to make a concern:

concern :commentable do    resources :comments end

resources :posts, concerns: [:commentable] resources :users, concerns: [:commentable]

When doing this, does this mean both of these resources would access the same controller? How can I have them access different controllers, and what would a proper naming convention be for each controller in your example?

If you’re referring to the comments resource, yes, both would post to the same controller in your format as well as the one I suggested. If you want them to point to different controllers, you will need to go back to your original format and specify a controller, such as:

resources posts do

resources comments, controller: “postcomment”

end

Thanks!