Kevin,

How did you create the friends method? I got it working by hacking
around, but I am wondering how you accomplished the same result.

User model:

  has_many :friend_invites, :class_name => "Friendship", :foreign_key
=> :invitee_id, :dependent => :destroy
  has_many :friend_invitors, :class_name => "Friendship", :foreign_key
=> :invitor_id, :dependent => :destroy

  has_many :accepted_invites, :class_name =>
"Friendship", :foreign_key => "invitee_id", :conditions => ['state
= ?', "active"]
  has_many :accepted_invitors, :class_name =>
"Friendship", :foreign_key => "invitee_id", :conditions => ['state
= ?', "active"]
  def friends
     accepted_invites + accepted_invitors
  end

Application:

<def tag="invite-button">
  <% target = this %>
  <do with="&Friendship.new">
  <form controller="friendships" lifecycle="invite" unless="&target ==
current_user or current_user.friends">
    <input type="hidden" name="friendship[invitee_id]" value="#
{target.id}" />
    <submit label="Request as Friend" />
  </form>
  </do>
</def>

Works great by the way :)

Owen,
Ofcourse I will create a recipe when I got it working and tweaked. So
far everything I got is in this thread :) You can invite other users
with a button thanks to Kevin. Creating the other functions should be
straight forward with the great examples.

Best regards.
Asbjørn Morell

On Jan 7, 8:52 pm, Owen Dall <[email protected]> wrote:
> Asbjorn,
>
> Would you mind posting your final working code as comments to the recipe?
> That may help others in the future.
>
> Thanks,
>
> Owen
>
>
>
> On Thu, Jan 7, 2010 at 2:03 PM, kevinpfromnm <[email protected]> wrote:
> > Just associations.  Friendship belongs_to two users, invitee and
> > invitor.
>
> >  has_many :friend_invites, :class_name => "Friendship", :foreign_key
> > => :invitee_id, :dependent => :destroy
> >  has_many :friend_invitors, :class_name => "Friendship", :foreign_key
> > => :invitor_id, :dependent => :destroy
>
> > On Jan 7, 4:54 am, atmorell <[email protected]> wrote:
> > > Hello Kevin,
>
> > > Thank you so much for your example. This is so usefull. Could you
> > > explain to me how you created the friends and friend_invites methods?
> > > At the moment my user has no relation to the friendship module.
>
> > >  NoMethodError in UsersController#show
>
> > > undefined method `friends' for #<User:0x4356430>
>
> > > Best regards.
> > > Asbjørn Morell
>
> > > On Jan 6, 9:28 pm, kevinpfromnm <[email protected]> wrote:
>
> > > > You have to tweak it more than just the putting in the invite-form...
> > > > when I did it, I ended up making an invite button that was the form
> > > > with the context (user) as a hidden id sent with.  This is what I had
> > > > in my friendship taglib for a particular app:
>
> > > > <def tag="invite-button">
> > > >   <% target = this %>
> > > >   <do with="&Friendship.new">
> > > >   <form controller="friendships" lifecycle="invite" unless="&target ==
> > > > current_user or current_user.friends('all').include?(target)">
> > > >     <input type="hidden" name="friendship[invitee_id]" value="#
> > > > {target.id}" />
> > > >     <submit label="Request as Friend" />
> > > >   </form>
> > > >   </do>
> > > > </def>
> > > > <def tag="card" for="Friendship" attrs="parent">
> > > >   <% parent ||= @user %>
> > > >   <card merge>
> > > >     <body:>
> > > >                         <view:invitee unless="&this.invitee == parent"
> > />
> > > >                         <view:invitor unless="&this.invitor == parent"
> > />
> > > >       <transition-buttons />
> > > >     </body:>
> > > >   </card>
> > > > </def>
> > > > <def tag="friend-requests">
> > > >         <collection:friend_invites.pending>
> > > >                 <empty-message:>No pending friend
> > invites.</empty-message:>
> > > >                 <card: parent="&current_user" />
> > > >         </collection>
> > > > </def>
> > > > <def tag="requested-friends">
> > > >         <collection:friend_invitors.pending>
> > > >                 <empty-message:>No friend requests
> > pending.</empty-message:>
> > > >                 <card: parent="&current_user" />
> > > >         </collection>
> > > > </def>
>
> > > > On Jan 3, 11:05 am, atmorell <[email protected]> wrote:
>
> > > > > Hello,
>
> > > > > The lifecycle tutorial shows how to implement a friendship logic in
> > > > > the model and controller. However it does not really cover how to
> > glue
> > > > > the gui/views together. When I go to /friendships/invite - hobo
> > > > > presents me with a form with a drop down menu. How do I add a form to
> > > > > the user show-page with just one button (Invite) I guess that the the
> > > > > user viewed should be in a hidden field?
>
> > > > > I tried adding the form like this:
>
> > > > > <extend tag="show-page" for="User">
> > > > >   <old-show-page merge>
> > > > >     <append-content-body:>
> > > > >       <invite-form for="Friendship" />
> > > > >     </append-content-body:>
> > > > >   </old-show-page>
> > > > > </extend>
>
> > > > > Hobo ignores the invite-form hmmm I must be missing something.
>
> > > > > Best regards
> > > > > Asbjørn Morell
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Hobo Users" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<hobousers%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/hobousers?hl=en.
>
> --
> Thanks,
>
> Owen
>
> Owen Dall
> Barquin International
> 410-991-0811
-- 
You received this message because you are subscribed to the Google Groups "Hobo 
Users" 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/hobousers?hl=en.


Reply via email to