Advertisement
Guest User

Untitled

a guest
Feb 14th, 2019
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.80 KB | None | 0 0
  1.  
  2. module HtwMembershipHandshake
  3.   module ProjectModelPatch
  4.     def self.included(base) # :nodoc:
  5.       base.include InstanceMethods
  6.       base.extend ClassMethods
  7.       # wrapping methods and save attributes:
  8.       base.class_eval do
  9.         # unloadable
  10.         has_many :waiting_members, -> { where "#{User.table_name}.type='User' AND #{User.table_name}.status=#{User::STATUS_ACTIVE}" },-> { includes [:user, :roles] }
  11.         #has_many :waiting_member_principals, :class_name => 'WaitingMember', :include => :principal, :conditions => "#{Principal.table_name}.type'Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{User::STATUS_ACTIVE})"
  12.         #TODO FIX conditions
  13.         has_many :waiting_member_principals,-> { where "#{Principal.table_name}.type'Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{User::STATUS_ACTIVE})" } ,-> { includes :user }, :class_name => 'WaitingMember'
  14.        
  15.         before_destroy :delete_all_waiting_members
  16.       end #of class_eval
  17.     end #of self.included
  18.  
  19.     module ClassMethods
  20.  
  21.       def plugin_htw_membership_handshake
  22.         puts "Plugin HTW Berlin active\n"
  23.         nil
  24.       end
  25.  
  26.     end #end of ClassMethods
  27.  
  28.     module InstanceMethods
  29.  
  30.       # Deletes all project's waiting members
  31.       def delete_all_waiting_members
  32.         me = WaitingMember.table_name
  33.         mr = WaitingMemberRole.table_name
  34.         connection.delete("DELETE FROM #{mr} WHERE #{mr}.waiting_member_id IN (SELECT #{me}.id FROM #{me} WHERE #{me}.project_id = #{id})")
  35.         WaitingMember.delete_all(['project_id = ?', id])
  36.       end
  37.     end #end of module IM
  38.  
  39.   end # model patch
  40. end # module userlevel
  41.  
  42. ActionDispatch::Callbacks.to_prepare do
  43.   Project.include(HtwMembershipHandshake::ProjectModelPatch)
  44. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement