From 662fcf01121c29f84334a55bf871600dd8a85d10 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Mon, 29 Oct 2012 06:45:47 -0400 Subject: [PATCH] initial musician / band dev --- lib/jam_ruby.rb | 1 + lib/jam_ruby/models/band.rb | 12 ++++++++ lib/jam_ruby/models/instrument.rb | 6 +++- lib/jam_ruby/models/user.rb | 39 +++++++++++++++++++++++--- lib/jam_ruby/models/user_instrument.rb | 10 +++++++ 5 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 lib/jam_ruby/models/user_instrument.rb diff --git a/lib/jam_ruby.rb b/lib/jam_ruby.rb index 71428d3c2..8887749ea 100644 --- a/lib/jam_ruby.rb +++ b/lib/jam_ruby.rb @@ -19,6 +19,7 @@ require "jam_ruby/models/music_session" require "jam_ruby/models/invitation" require "jam_ruby/models/friend_request" require "jam_ruby/models/instrument" +require "jam_ruby/models/user_instrument" include Jampb diff --git a/lib/jam_ruby/models/band.rb b/lib/jam_ruby/models/band.rb index 4ea0bb19e..663a2a40d 100644 --- a/lib/jam_ruby/models/band.rb +++ b/lib/jam_ruby/models/band.rb @@ -1,10 +1,22 @@ module JamRuby class Band < ActiveRecord::Base + attr_accessor :photo_url, :logo_url + self.primary_key = 'id' has_and_belongs_to_many :users, :class_name => "JamRuby::User" has_many :genres, :class_name => "JamRuby::Genre" + def photo_url + # TODO: move image path to config + @photo_url = "http://www.jamkazam.com/images/bands/photos/#{self.id}.gif"; + end + + def logo_url + # TODO: move image path to config + @logo_url = "http://www.jamkazam.com/images/bands/logos/#{self.id}.gif"; + end + end end \ No newline at end of file diff --git a/lib/jam_ruby/models/instrument.rb b/lib/jam_ruby/models/instrument.rb index 3c3214334..db3019be9 100644 --- a/lib/jam_ruby/models/instrument.rb +++ b/lib/jam_ruby/models/instrument.rb @@ -3,7 +3,11 @@ module JamRuby self.primary_key = 'id' - has_and_belongs_to_many :users, :class_name => "JamRuby::User" + # users + has_many :user_instruments + has_many :users, :through => :user_instruments, :class_name => "JamRuby::User" + + # music sessions has_and_belongs_to_many :music_sessions, :class_name => "JamRuby::MusicSession", :join_table => "genres_music_sessions" end diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index 96080ccb5..6ca9df5c6 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -2,27 +2,35 @@ module JamRuby class User < ActiveRecord::Base attr_accessible :name, :email, :password, :password_confirmation - attr_accessor :updating_password, :online + attr_accessor :updating_password, :online, :photo_url self.primary_key = 'id' - - # re-visit later (used for multiple table inheritance w/ Musician model) - # belongs_to :biz, :polymorphic => true + # connections (websocket-gateway) has_many :connections, :class_name => "JamRuby::Connection" + # friend requests has_many :friend_requests, :class_name => "JamRuby::FriendRequest" + + # instruments + has_many :user_instruments + has_many :instruments, :through => :user_instruments, :class_name => "JamRuby::Instrument" + + # bands has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" + # friends has_many :friendships, :class_name => "JamRuby::Friendship", :foreign_key => "user_id" has_many :friends, :through => :friendships, :class_name => "JamRuby::User" has_many :inverse_friendships, :class_name => "JamRuby::Friendship", :foreign_key => "friend_id" has_many :inverse_friends, :through => :inverse_friendships, :source => :user, :class_name => "JamRuby::User" + # music sessions has_many :music_session_clients, :class_name => "JamRuby::MusicSessionClient" has_many :created_music_sessions, :foreign_key => "user_id", :inverse_of => :user, :class_name => "JamRuby::MusicSession" # sessions *created* by the user has_many :music_sessions, :through => :music_session_clients, :class_name => "JamRuby::MusicSession" + # invitations has_many :received_invitations, :foreign_key => "receiver_id", :inverse_of => :receiver, :class_name => "JamRuby::Invitation" has_many :sent_invitations, :foreign_key => "sender_id", :inverse_of => :sender, :class_name => "JamRuby::Invitation" @@ -46,6 +54,11 @@ module JamRuby return @online end + def photo_url + # TODO: move image path to config + @photo_url = "http://www.jamkazam.com/images/users/photos/#{self.id}.gif"; + end + def should_validate_password? updating_password || new_record? end @@ -60,6 +73,24 @@ module JamRuby return id end + def self.save(params) + if params[:id].nil? + user = User.new() + else + user = User.find(params[:id]) + end + + @user = User.find(params[:id]) + @user.email = params[:email] + @user.musician = params[:musician] + if @user.musician + @user.instruments = params[:instruments] + @user.bands = params[:bands] + end + @user.save + return user + end + private def create_remember_token self.remember_token = SecureRandom.urlsafe_base64 diff --git a/lib/jam_ruby/models/user_instrument.rb b/lib/jam_ruby/models/user_instrument.rb new file mode 100644 index 000000000..080b8def7 --- /dev/null +++ b/lib/jam_ruby/models/user_instrument.rb @@ -0,0 +1,10 @@ +module JamRuby + class UserInstrument < ActiveRecord::Base + + self.table_name = "users_instruments" + + belongs_to :user + belongs_to :instrument + + end +end \ No newline at end of file