From 02efd7ba4a736c09a45f6fb4ac329650498d9431 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 4 May 2008 11:18:38 +0000 Subject: [PATCH] Go back to using user_id+k as the primary key for user preferences but actually using the composite primary key extension this time so that it really works. Also stop update_one tring to render a non-existent view, and add a delete_one method to allow preferences to be deleted. --- app/controllers/user_preference_controller.rb | 17 +++++++++++------ app/models/user_preference.rb | 1 + config/routes.rb | 1 + db/migrate/012_add_user_preference_id.rb | 14 -------------- 4 files changed, 13 insertions(+), 20 deletions(-) delete mode 100644 db/migrate/012_add_user_preference_id.rb diff --git a/app/controllers/user_preference_controller.rb b/app/controllers/user_preference_controller.rb index a4de5c099..559479929 100644 --- a/app/controllers/user_preference_controller.rb +++ b/app/controllers/user_preference_controller.rb @@ -3,7 +3,7 @@ class UserPreferenceController < ApplicationController before_filter :authorize def read_one - pref = UserPreference.find(:first, :conditions => ['user_id = ? AND k = ?', @user.id, params[:preference_key]]) + pref = UserPreference.find(@user.id, params[:preference_key]) if pref render :text => pref.v.to_s @@ -13,20 +13,26 @@ class UserPreferenceController < ApplicationController end def update_one - pref = UserPreference.find(:first, :conditions => ['user_id = ? AND k = ?', @user.id, params[:preference_key]]) - - if pref + begin + pref = UserPreference.find(@user.id, params[:preference_key]) pref.v = request.raw_post.chomp pref.save - else + rescue ActiveRecord::RecordNotFound pref = UserPreference.new pref.user = @user pref.k = params[:preference_key] pref.v = request.raw_post.chomp pref.save end + + render :nothing => true end + def delete_one + UserPreference.delete(@user.id, params[:preference_key]) + + render :nothing => true + end # print out all the preferences as a big xml block def read @@ -91,5 +97,4 @@ class UserPreferenceController < ApplicationController render :nothing => true end - end diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb index 2a73f2233..3985a527e 100644 --- a/app/models/user_preference.rb +++ b/app/models/user_preference.rb @@ -1,4 +1,5 @@ class UserPreference < ActiveRecord::Base + set_primary_keys :user_id, :k belongs_to :user # Turn this Node in to an XML Node without the wrapper. diff --git a/config/routes.rb b/config/routes.rb index 2ac48cc29..06f1583ff 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -45,6 +45,7 @@ ActionController::Routing::Routes.draw do |map| map.connect "api/#{API_VERSION}/user/preferences/:preference_key", :controller => 'user_preference', :action => 'read_one', :conditions => { :method => :get } map.connect "api/#{API_VERSION}/user/preferences", :controller => 'user_preference', :action => 'update', :conditions => { :method => :put } map.connect "api/#{API_VERSION}/user/preferences/:preference_key", :controller => 'user_preference', :action => 'update_one', :conditions => { :method => :put } + map.connect "api/#{API_VERSION}/user/preferences/:preference_key", :controller => 'user_preference', :action => 'delete_one', :conditions => { :method => :delete } map.connect "api/#{API_VERSION}/user/gpx_files", :controller => 'user', :action => 'api_gpx_files' map.connect "api/#{API_VERSION}/gpx/create", :controller => 'trace', :action => 'api_create' diff --git a/db/migrate/012_add_user_preference_id.rb b/db/migrate/012_add_user_preference_id.rb deleted file mode 100644 index e644e87a1..000000000 --- a/db/migrate/012_add_user_preference_id.rb +++ /dev/null @@ -1,14 +0,0 @@ -class AddUserPreferenceId < ActiveRecord::Migration - def self.up - remove_primary_key 'user_preferences' - add_column "user_preferences", "id", :bigint, :limit => 64, :null => false - add_primary_key "user_preferences", ["id"] - change_column "user_preferences", "id", :bigint, :limit => 64, :null => false, :options => "AUTO_INCREMENT" - add_index "user_preferences", ["id"], :name => "user_preferences_id_idx" - end - - def self.down - remove_index 'user_preferences', 'id' - remove_column 'user_preferences', 'id' - end -end -- 2.43.2