Sha256: d560d5b089225a6d2a8a593e8ff691c6d58c809da0631e208f30b6fdf82ddd89

Contents?: true

Size: 528 Bytes

Versions: 4

Compression:

Stored size: 528 Bytes

Contents

# Trait to manage the attendees of a conference.
# origin: M
module Conference::AttendanceTrait
  as_trait do

    has_many :attendances, :dependent => :destroy
    has_many :attendees, :through => :attendances, :source => :user

    def attended_by?(user)
      @attendee_ids ||= attendee_ids
      @attendee_ids.include?(user.id)
    end

    def attend!(user)
      attendees << user unless attended_by?(user)
    end

    def cancel_attendance!(user)
      attendees.delete(user) if attended_by?(user)
    end
    
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
serum-rails-0.2.1 spec/test_apps/rails-2-3/app/models/conference/attendance_trait.rb
serum-rails-0.2.0 spec/test_apps/rails-2-3/app/models/conference/attendance_trait.rb
serum-rails-0.1.1 spec/test_app/app/models/conference/attendance_trait.rb
serum-rails-0.1.0 spec/test_app/app/models/conference/attendance_trait.rb