Sha256: 322fafc71d1676f43e9acb222a5113432a5586bf41045687d1f436c3138f9506

Contents?: true

Size: 1.28 KB

Versions: 66

Compression:

Stored size: 1.28 KB

Contents

class Group < ActiveRecord::Base
  include SocialStream::Models::Subject

  attr_accessor :_participants

  delegate :description, :description=, :to => :profile!

  after_create :create_ties

  def profile!
    actor!.profile || actor!.build_profile
  end

  def followers
    contact_subjects(:subject_type => :user, :direction => :received)
  end
  
  def recent_groups
    contact_subjects(:type => :group, :direction => :sent) do |q|
      q.select("contacts.created_at").
        merge(Contact.recent)
    end
  end

  private

  # Creates ties from founder to the group, based on _relation_ids,
  # and ties from the group to founder and participants.
  def create_ties
    create_ties_from_founder
    create_ties_to_participants
  end

  # Creates the ties from the founder to the group
  def create_ties_from_founder
    _contact.sender.sent_contacts.create! :receiver_id  => actor_id,
                                          :relation_ids => _relation_ids
  end
  
  # Creates the ties from the group to the participants
  def create_ties_to_participants
    ([ _contact.sender_id, _contact.receiver_id ] | Array.wrap(@_participants)).uniq.each do |a|
      sent_contacts.create! :receiver_id => a,
                            :relation_ids => Array(relation_customs.sort.first.id)
    end
  end
end

Version data entries

66 entries across 66 versions & 2 rubygems

Version Path
social_stream-0.12.14 base/app/models/group.rb
social_stream-base-0.9.36 app/models/group.rb
social_stream-0.12.13 base/app/models/group.rb
social_stream-base-0.9.35 app/models/group.rb
social_stream-0.12.12 base/app/models/group.rb
social_stream-base-0.9.34 app/models/group.rb
social_stream-0.12.11 base/app/models/group.rb
social_stream-base-0.9.33 app/models/group.rb
social_stream-0.12.10 base/app/models/group.rb
social_stream-base-0.9.32 app/models/group.rb
social_stream-0.12.9 base/app/models/group.rb
social_stream-base-0.9.31 app/models/group.rb
social_stream-0.12.8 base/app/models/group.rb
social_stream-base-0.9.30 app/models/group.rb
social_stream-0.12.7 base/app/models/group.rb
social_stream-base-0.9.29 app/models/group.rb
social_stream-0.12.6 base/app/models/group.rb
social_stream-0.12.5 base/app/models/group.rb
social_stream-base-0.9.28 app/models/group.rb
social_stream-0.12.4 base/app/models/group.rb