From 76f2aa98ac4e481f661812c336f38ee692f4749e Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 23 Aug 2010 14:45:13 -0700 Subject: [PATCH] Push to multiple groups --- app/controllers/status_messages_controller.rb | 2 +- app/models/user.rb | 17 +++++++++-------- app/views/shared/_publisher.haml | 5 +---- spec/models/group_spec.rb | 2 +- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 786b15007..863deb137 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -9,7 +9,7 @@ class StatusMessagesController < ApplicationController end def create - puts params.inspect + params[:status_message][:group_ids] = params[:group_ids] @status_message = current_user.post(:status_message, params[:status_message]) if @status_message.created_at diff --git a/app/models/user.rb b/app/models/user.rb index 38dde280a..a867f5973 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -42,8 +42,8 @@ class User def post(class_name, options = {}) options[:person] = self.person - group_id = options[:group_id] - options.delete(:group_id) + group_ids = options[:group_ids] + options.delete(:group_ids) model_class = class_name.to_s.camelize.constantize @@ -52,14 +52,15 @@ class User post.save - if group_id - group = self.groups.find_by_id(group_id) + groups = self.groups.find_all_by_id(group_ids) + target_people = [] + + groups.each{ |group| group.posts << post group.save - post.push_to( group.people.all ) - else - post.push_to( self.friends.all ) - end + target_people = target_people | group.people + } + post.push_to( target_people ) post.socket_to_uid(id) if post.respond_to?(:socket_to_uid) diff --git a/app/views/shared/_publisher.haml b/app/views/shared/_publisher.haml index 88fc20443..ef261c1f1 100644 --- a/app/views/shared/_publisher.haml +++ b/app/views/shared/_publisher.haml @@ -3,9 +3,6 @@ = form_for StatusMessage.new, :remote => true do |f| = f.error_messages - -if group_id - = f.hidden_field :group_id, :value => group_id - .span-15.last .span-2.last .user_image @@ -21,7 +18,7 @@ going to... - for group in current_user.groups %li - = check_box_tag("groups_id[]", group.id, current_group?(group)) + = check_box_tag("group_ids[]", group.id, current_group?(group)) = group.name .span-1.last = f.submit "Post" diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index dc0920a66..93bc9f949 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -70,7 +70,7 @@ describe Group do it 'should add post to group via post method' do group = @user.group(:name => 'losers', :people => [@friend]) - status_message = @user.post( :status_message, :message => "hey", :group_id => group.id ) + status_message = @user.post( :status_message, :message => "hey", :group_ids => [group.id] ) group.reload group.posts.include?(status_message).should be true