From cbf1114c4f9e31e25a42ff1e5c0ce4f208bad150 Mon Sep 17 00:00:00 2001 From: Saurabh Bhatia Date: Thu, 10 Jul 2014 14:48:18 +0800 Subject: [PATCH] fixes for import, fixes for deletes --- app/controllers/admin/import_controller.rb | 2 +- app/controllers/admin/members_controller.rb | 4 +++- app/models/attribute_field.rb | 4 ---- app/models/member_profile.rb | 10 ++++++++++ app/models/role.rb | 2 +- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index ca07350..9255158 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -494,7 +494,7 @@ class Admin::ImportController < OrbitAdminController fields.each do |f| type = f["type"] key = f["name"]["en"].gsub("/"," ").split(' ').join('_').underscore rescue nil - field = AttributeField.find_by(key: key) rescue nil + field = AttributeField.find_by(key: key, role_id: new_role.id) rescue nil if (field.nil? && key != "category" && key != "academic_status") if type == "text" attribute = new_role.attribute_fields.build(key: key, title_translations: {"en"=>f["name"]["en"],"zh_tw"=>f["name"]["zh-tw"]}) diff --git a/app/controllers/admin/members_controller.rb b/app/controllers/admin/members_controller.rb index c392b2a..e026f1e 100644 --- a/app/controllers/admin/members_controller.rb +++ b/app/controllers/admin/members_controller.rb @@ -181,7 +181,9 @@ class Admin::MembersController < OrbitMemberController else @member_profile = MemberProfile.find(params[:id]) @member_profile.user.delete if @member_profile.user.present? - @member_profile.delete + @member_profile.destroy + @member_profile.roles.clear + @member_profile.role_statuses.clear end respond_to do |format| diff --git a/app/models/attribute_field.rb b/app/models/attribute_field.rb index 73a4fcc..84af526 100644 --- a/app/models/attribute_field.rb +++ b/app/models/attribute_field.rb @@ -69,10 +69,6 @@ class AttributeField end - def role - self.attribute.role - end - def panel panel = LIST[:markups][self[:markup]]["panel"] end diff --git a/app/models/member_profile.rb b/app/models/member_profile.rb index 0d7b8b0..f5d5026 100644 --- a/app/models/member_profile.rb +++ b/app/models/member_profile.rb @@ -40,6 +40,8 @@ class MemberProfile scope :can_display, ->{where(is_hidden: false).order_by([:is_top,:desc],[:created_at,:desc])} before_save :assign_default_position, :if => :assign_default_position? + before_destroy :delete_personal_plugin_data + mount_uploader :avatar, AvatarUploader paginates_per 10 @@ -151,6 +153,14 @@ class MemberProfile end end + def delete_personal_plugin_data + OrbitApp::Plugin::Registration.all.each do |plugin| + class_name = plugin.app_name.constantize + plugin_data = class_name.where(member_profile_id: self.id) + plugin_data.delete + end + end + def assign_default_position? self.position.nil? || self.parent_id_changed? end diff --git a/app/models/role.rb b/app/models/role.rb index 95e1f1d..6638843 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -13,7 +13,7 @@ class Role has_many :attribute_fields accepts_nested_attributes_for :attribute_fields - has_many :role_statuses + has_many :role_statuses, dependent: :destroy def is_built_in? self.built_in