Guest User

Untitled

a guest
Jul 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. ## initializers/setup_user_groups.rb
  2. USER_GROUP_TYPES = %w{group ministry}
  3. USER_GROUP_SUB_RESOURCES = %w{page user}
  4.  
  5. ## routes.rb (excerpt)
  6. USER_GROUP_TYPES.each do |resource_type|
  7. map.resources resource_type.pluralize, :controller => 'user_groups' do |groups|
  8. USER_GROUP_SUB_RESOURCES.each do |subresource|
  9. groups.resources subresource.pluralize
  10. end
  11. end
  12. end
  13.  
  14. ## application_controller.rb (excerpt)
  15. before_filter :fix_user_group_sub_resources
  16.  
  17. private
  18. def fix_user_group_sub_resources
  19. USER_GROUP_TYPES.map{|t|"#{t}_id".to_sym}.each do |resource_id|
  20. params[:user_group_id] ||= params.delete(resource_id)
  21. end
  22. end
  23.  
  24.  
  25. ## user_groups_controller.rb (excerpt)
  26. class UserGroupsController < ApplicationController
  27. def index
  28. @user_groups = UserGroup.all(:conditions => ['group_type = ?', extract_group_type_from_url])
  29. end
  30.  
  31. def new
  32. @user_group = UserGroup.new(:group_type => extract_group_type_from_url)
  33. end
  34.  
  35. def create
  36. @user_group = UserGroup.new(params[:user_group].merge(:group_type => extract_group_type_from_url))
  37. #...standard save stuff...
  38. end
  39.  
  40. protected
  41. def extract_groups_type_from_url
  42. routes = ActionController::Routing::Routes.routes_for_controller_and_action_and_keys(controller_name, 'index', nil)
  43. segments = ActionController::Routing::Routes.to_plain_segments(request.path)
  44. route_segments = routes.map do |route|
  45. route.segments.select{|s|s.respond_to?('value')}.map{|s|s.value}
  46. end.flatten
  47. (route_segments & segments).first
  48. end
  49.  
  50. def extract_group_type_from_url
  51. extract_groups_type_from_url.singularize
  52. end
  53. helper_method :extract_groups_type_from_url, :extract_group_type_from_url
  54. end
  55.  
  56. ## user_groups_helper.rb
  57. module UserGroupsHelper
  58. def user_groups_url
  59. send("#{extract_groups_type_from_url}_url")
  60. end
  61.  
  62. def user_groups_path
  63. send("#{extract_groups_type_from_url}_path")
  64. end
  65.  
  66. def user_group_path(user_group)
  67. send("#{user_group.group_type}_path", user_group)
  68. end
  69.  
  70. def edit_user_group_path(user_group)
  71. send("edit_#{user_group.group_type}_path", user_group)
  72. end
  73.  
  74. def new_user_group_path
  75. send("new_#{extract_group_type_from_url}_path")
  76. end
  77.  
  78. USER_GROUP_SUB_RESOURCES.each do |sub_resource_type|
  79. define_method("user_group_#{sub_resource_type.pluralize}_path") do |parent_resource|
  80. send("#{parent_resource.group_type}_#{sub_resource_type.pluralize}_path", parent_resource)
  81. end
  82.  
  83. define_method("user_group_#{sub_resource_type}_path") do |parent_resource, sub_resource|
  84. send("#{parent_resource.group_type}_#{sub_resource_type}_path", parent_resource, sub_resource)
  85. end
  86.  
  87. define_method("edit_user_group_#{sub_resource_type}_path") do |parent_resource, sub_resource|
  88. send("edit_#{parent_resource.group_type}_#{sub_resource_type}_path", parent_resource, sub_resource)
  89. end
  90.  
  91. define_method("new_user_group_#{sub_resource_type}_path") do |parent_resource|
  92. send("new_#{parent_resource.group_type}_#{sub_resource_type}_path", parent_resource)
  93. end
  94. end
  95. end
Add Comment
Please, Sign In to add comment