Ok, that makes sense. So you either need to add a route for user_game, or
else change commentable_url to produce member_game (if you'd prefer that
route).
So you could add something like:

  map.resources :games, :path_prefix => "/:user_id", :name_prefix => "user_"

Or:

  map.user_game '/:user_id/game/:id', :controller => 'game', :action =>
"show"


(or lots of other methods, probably). See:
http://apidock.com/rails/ActionController/Resources/resource and
http://apidock.com/rails/ActionController/Resources/resource

Thanks,
Bruno


On Mon, Jun 1, 2009 at 10:48 AM, mike muldoon <[email protected]>wrote:

>
> My use case relies on having the Member class inherit from User, and
> Member own a bunch of other classes which I would like to be
> commentable, including Game.
>
> I would like comment.recipient set, in order to facilitate email
> notifications, etc. (I tested leaving it unset, and that broke some
> views downstream. I will pursue that approach further if need be.)
>
> So, I assert that user_game_url is appropriate, but the route fails.
>
> Do I need to add a route to make that work? I haven't found a matching
> route in the output from rake routes, but don't know if there's some
> other mechanism at work.
>
> I may be lacking some other clue, which is why I'm describing the use
> case. Thanks for your patience.
>
> On Mon, Jun 1, 2009 at 7:09 AM, Bruno Bornsztein
> <[email protected]> wrote:
> > I'm confused. You want user_game_url and commentable_url is returning
> > user_game_url? What's the problem?
> >
> >
> > On Sat, May 30, 2009 at 3:11 PM, mike muldoon <[email protected]>
> > wrote:
> >>
> >> I was already in there, trying various permutations for just such a
> >> Game special case. This generates 'member_game_url':
> >>
> >>  def commentable_url(comment)
> >>    if comment.recipient && comment.commentable
> >>      if comment.commentable_type == "Game"
> >>        debugger
> >>        polymorphic_url([comment.commentable.member,
> >>
> >> comment.commentable])+"#comment_#{comment.id}"
> >>      elsif ...
> >>
> >> member_game_url has no route because Member is just a model, and has
> >> no controller. Put another way, Members don't own Photos, Users do.
> >> The desired route is user_game_url, which has me thinking that maybe
> >> LostyJai's suggestion would be appropriate, as this isn't the result
> >> of a bug in polymorphic_url.
> >>
> >> Thoughts?
> >>
> >>
> >> On Fri, May 29, 2009 at 6:33 PM, Bruno Bornsztein
> >> <[email protected]> wrote:
> >> > Look at commentable_url in BaseHelper. It calls:
> >> >         polymorphic_url([comment.recipient,
> >> > comment.commentable])+"#comment_#{comment.id}"
> >> > So it uses the recipient of the comment (which is a user) for comments
> >> > on
> >> > anything other than users. You can overwrite that method to make an
> >> > exception for Games, something like (pseudo-code):
> >> > if comment.commentable_type == "Game"
> >> >   polymorphic_url([comment.commentable.member, comment])
> >> > #comment.commentable should return a Game
> >> > end
> >> > Good luck,
> >> > Bruno
> >> > On Fri, May 29, 2009 at 8:06 PM, LostyJai <[email protected]>
> >> > wrote:
> >> >>
> >> >> Have you defined your model as a subclass of user in routes?
> >> >>
> >> >> On May 30, 8:52 am, angrysponge <[email protected]> wrote:
> >> >> > I have a Game model which I would like to enable comments for.
> Games
> >> >> > are owned by Members, which is a subclass of User. The relevant
> model
> >> >> > code needed thus far:
> >> >> >
> >> >> > class Game < ActiveRecord::Base
> >> >> >   belongs_to :member
> >> >> >   acts_as_commentable
> >> >> >   def owner
> >> >> >     self.member.becomes(User)
> >> >> >   end
> >> >> >
> >> >> > class Member < User
> >> >> >   has_many :games
> >> >> >
> >> >> > Saving a comment for a Game generates this error:
> >> >> > NoMethodError in CommentsController#create
> >> >> > undefined method `user_game_url' for
> #<CommentsController:0xb6daef9c>
> >> >> >
> >> >> > When adding a comment to a Photo, polymorphic_url() returns
> >> >> > 'user_photo_url', so 'user_game_url' looks reasonable, except that
> >> >> > Users don't own Games, Members do.
> >> >> >
> >> >> > Am I missing some route details for my Game model?
> >> >> >
> >> >> > Any suggestions?
> >> >> > Mike
> >> >>
> >> >
> >> >
> >> > >
> >> >
> >>
> >>
> >
> >
> > >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CommunityEngine" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/communityengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to