Commit c6d40a343813401f1e3f9a43a6036adb1a5db747

Authored by Braulio Bhavamitra
1 parent 9b404dbe

rails4: Array is not used for AR results

app/models/person.rb
@@ -17,19 +17,19 @@ class Person < Profile @@ -17,19 +17,19 @@ class Person < Profile
17 acts_as_accessor 17 acts_as_accessor
18 18
19 scope :members_of, -> (resources) { 19 scope :members_of, -> (resources) {
20 - resources = [resources] if !resources.kind_of?(Array) 20 + resources = Array(resources)
21 conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') 21 conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ')
22 select('DISTINCT profiles.*').joins(:role_assignments).where([conditions]) 22 select('DISTINCT profiles.*').joins(:role_assignments).where([conditions])
23 } 23 }
24 24
25 scope :not_members_of, -> (resources) { 25 scope :not_members_of, -> (resources) {
26 - resources = [resources] if !resources.kind_of?(Array) 26 + resources = Array(resources)
27 conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') 27 conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ')
28 select('DISTINCT profiles.*').where('"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions) 28 select('DISTINCT profiles.*').where('"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions)
29 } 29 }
30 30
31 scope :by_role, -> (roles) { 31 scope :by_role, -> (roles) {
32 - roles = [roles] unless roles.kind_of?(Array) 32 + roles = Array(roles)
33 select('DISTINCT profiles.*').joins(:role_assignments).where('role_assignments.role_id IN (?)', roles) 33 select('DISTINCT profiles.*').joins(:role_assignments).where('role_assignments.role_id IN (?)', roles)
34 } 34 }
35 35
lib/noosfero/plugin/manager.rb
@@ -57,7 +57,7 @@ class Noosfero::Plugin::Manager @@ -57,7 +57,7 @@ class Noosfero::Plugin::Manager
57 57
58 def pipeline(event, *args) 58 def pipeline(event, *args)
59 each do |plugin| 59 each do |plugin|
60 - result = plugin.send(event, *args) 60 + result = Array(plugin.send event, *args)
61 result = result.kind_of?(Array) ? result : [result] 61 result = result.kind_of?(Array) ? result : [result]
62 raise ArgumentError, "Pipeline broken by #{plugin.class.name} on #{event} with #{result.length} arguments instead of #{args.length}." if result.length != args.length 62 raise ArgumentError, "Pipeline broken by #{plugin.class.name} on #{event} with #{result.length} arguments instead of #{args.length}." if result.length != args.length
63 args = result 63 args = result
vendor/plugins/access_control/lib/acts_as_accessible.rb
1 module ActsAsAccessible 1 module ActsAsAccessible
2 - # This is the global hash of permissions and each item is of the form 2 + # This is the global hash of permissions and each item is of the form
3 # 'class_name' => permission_hash for each target have its own set of permissions 3 # 'class_name' => permission_hash for each target have its own set of permissions
4 # but its not a namespace so each permission name should be unique 4 # but its not a namespace so each permission name should be unique
5 PERMISSIONS = {} 5 PERMISSIONS = {}
@@ -20,17 +20,19 @@ module ActsAsAccessible @@ -20,17 +20,19 @@ module ActsAsAccessible
20 end 20 end
21 21
22 def affiliate(accessor, roles) 22 def affiliate(accessor, roles)
23 - roles = [roles] unless roles.kind_of?(Array)  
24 - roles.map {|role| accessor.add_role(role, self)}.any? 23 + roles = Array(roles)
  24 + roles.map {|role| accessor.add_role(role, self)}.any?
25 end 25 end
26 26
27 def disaffiliate(accessor, roles) 27 def disaffiliate(accessor, roles)
28 - roles = [roles] unless roles.kind_of?(Array)  
29 - role_assignments.map{|ra|ra.destroy if roles.include?(ra.role) && ra.accessor == accessor} 28 + roles = Array(roles)
  29 + role_assignments.map do |ra|
  30 + ra.destroy if roles.include?(ra.role) && ra.accessor == accessor
  31 + end
30 end 32 end
31 33
32 def roles 34 def roles
33 - Role.find_all_by_environment_id(environment.id).select do |r| 35 + Role.find_all_by_environment_id(environment.id).select do |r|
34 r.permissions.any?{ |p| PERMISSIONS[self.class.base_class.name].include?(p) } 36 r.permissions.any?{ |p| PERMISSIONS[self.class.base_class.name].include?(p) }
35 end 37 end
36 end 38 end
vendor/plugins/access_control/lib/acts_as_accessor.rb
@@ -14,7 +14,7 @@ module ActsAsAccessor @@ -14,7 +14,7 @@ module ActsAsAccessor
14 end 14 end
15 15
16 def define_roles(roles, resource) 16 def define_roles(roles, resource)
17 - roles = [roles] unless roles.kind_of?(Array) 17 + roles = Array(roles)
18 actual_roles = RoleAssignment.where(role_attributes nil, resource).map(&:role) 18 actual_roles = RoleAssignment.where(role_attributes nil, resource).map(&:role)
19 19
20 (roles - actual_roles).each {|r| add_role(r, resource) } 20 (roles - actual_roles).each {|r| add_role(r, resource) }