Commit 89997cec9b5ac0cf6b1adbce5144b052395cc5b4

Authored by Victor Costa
1 parent a997e8fc

rails3: fix use of Person.or_scope

There must be a better way to merge scopes (grouped with OR) in rails3
app/models/profile.rb
... ... @@ -92,7 +92,15 @@ class Profile < ActiveRecord::Base
92 92 def members
93 93 scopes = plugins.dispatch_scopes(:organization_members, self)
94 94 scopes << Person.members_of(self)
95   - scopes.size == 1 ? scopes.first : Person.or_scope(scopes)
  95 +
  96 + clauses = scopes.map do |relation|
  97 + clause = relation.arel.where_clauses.map { |clause| "(#{clause})" }.join(' AND ')
  98 + "(#{clause})"
  99 + end.join(' OR ')
  100 +
  101 + joins = scopes.map { |relation| relation.joins_values }.flatten.uniq
  102 + selects = scopes.map { |relation| relation.select_values }.flatten.uniq
  103 + Person.select(selects).joins(joins).where(clauses)
96 104 end
97 105  
98 106 def members_count
... ...
test/unit/profile_test.rb
... ... @@ -1807,7 +1807,7 @@ class ProfileTest &lt; ActiveSupport::TestCase
1807 1807 assert_includes original_community.members, original_member
1808 1808 assert_includes original_community.members, plugin1_member
1809 1809 assert_includes original_community.members, plugin2_member
1810   - assert 3, original_community.members.count
  1810 + assert_equal 3, original_community.members.count
1811 1811 end
1812 1812  
1813 1813 private
... ...