Excellent, I can run with these ideas. That polymorphic_url bug report
threw me off the routes angle at first, but this is making more sense.

I'll report back with my findings, thx Bruno!

On Mon, Jun 1, 2009 at 9:07 AM, Bruno Bornsztein
<[email protected]> wrote:
> 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