Commit 3e4f46a015ed0bfc745859a2196e9d43a3ca2297

Authored by Antonio Terceiro
2 parents 8c1e4fab fc39396c

Merge branch 'fix_members_listing' into 'master'

Fix members listing

There is a problem in environments when listing profile members:

No Method Error 'map' for #<Arel::Nodes::SqlLiteral>

This problem is related to a 'count' being executed in a query with 'includes'.

See merge request !392
app/controllers/public/profile_controller.rb
... ... @@ -65,13 +65,13 @@ class ProfileController &lt; PublicController
65 65  
66 66 def friends
67 67 if is_cache_expired?(profile.friends_cache_key(params))
68   - @friends = profile.friends.includes(relations_to_include).paginate(:per_page => per_page, :page => params[:npage])
  68 + @friends = profile.friends.includes(relations_to_include).paginate(:per_page => per_page, :page => params[:npage], :total_entries => profile.friends.count)
69 69 end
70 70 end
71 71  
72 72 def members
73 73 if is_cache_expired?(profile.members_cache_key(params))
74   - @members = profile.members_by_name.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage])
  74 + @members = profile.members_by_name.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => profile.members.count)
75 75 end
76 76 end
77 77  
... ...
app/models/profile.rb
... ... @@ -97,7 +97,7 @@ class Profile &lt; ActiveRecord::Base
97 97 end
98 98  
99 99 def members_by_name
100   - members.order(:name)
  100 + members.order('profiles.name')
101 101 end
102 102  
103 103 class << self
... ...
plugins/people_block/controllers/people_block_plugin_profile_controller.rb
... ... @@ -6,12 +6,13 @@ class PeopleBlockPluginProfileController &lt; ProfileController
6 6 if is_cache_expired?(profile.members_cache_key(params))
7 7 unless params[:role_key].blank?
8 8 role = Role.find_by_key_and_environment_id(params[:role_key], profile.environment)
9   - @members = profile.members.with_role(role.id).includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage])
  9 + @members = profile.members.with_role(role.id)
10 10 @members_title = role.name
11 11 else
12   - @members = profile.members.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage])
  12 + @members = profile.members
13 13 @members_title = 'members'
14 14 end
  15 + @members = @members.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => @members.count)
15 16 end
16 17 render "profile/members"
17 18 end
... ...