From c6d40a343813401f1e3f9a43a6036adb1a5db747 Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Sun, 5 Apr 2015 10:33:54 -0300 Subject: [PATCH] rails4: Array is not used for AR results --- app/models/person.rb | 6 +++--- lib/noosfero/plugin/manager.rb | 2 +- vendor/plugins/access_control/lib/acts_as_accessible.rb | 14 ++++++++------ vendor/plugins/access_control/lib/acts_as_accessor.rb | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 5c2db0a..e19f21f 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -17,19 +17,19 @@ class Person < Profile acts_as_accessor scope :members_of, -> (resources) { - resources = [resources] if !resources.kind_of?(Array) + resources = Array(resources) conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') select('DISTINCT profiles.*').joins(:role_assignments).where([conditions]) } scope :not_members_of, -> (resources) { - resources = [resources] if !resources.kind_of?(Array) + resources = Array(resources) conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') 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) } scope :by_role, -> (roles) { - roles = [roles] unless roles.kind_of?(Array) + roles = Array(roles) select('DISTINCT profiles.*').joins(:role_assignments).where('role_assignments.role_id IN (?)', roles) } diff --git a/lib/noosfero/plugin/manager.rb b/lib/noosfero/plugin/manager.rb index 673807e..b2c7751 100644 --- a/lib/noosfero/plugin/manager.rb +++ b/lib/noosfero/plugin/manager.rb @@ -57,7 +57,7 @@ class Noosfero::Plugin::Manager def pipeline(event, *args) each do |plugin| - result = plugin.send(event, *args) + result = Array(plugin.send event, *args) result = result.kind_of?(Array) ? result : [result] raise ArgumentError, "Pipeline broken by #{plugin.class.name} on #{event} with #{result.length} arguments instead of #{args.length}." if result.length != args.length args = result diff --git a/vendor/plugins/access_control/lib/acts_as_accessible.rb b/vendor/plugins/access_control/lib/acts_as_accessible.rb index de3ef37..359329b 100644 --- a/vendor/plugins/access_control/lib/acts_as_accessible.rb +++ b/vendor/plugins/access_control/lib/acts_as_accessible.rb @@ -1,5 +1,5 @@ module ActsAsAccessible - # This is the global hash of permissions and each item is of the form + # This is the global hash of permissions and each item is of the form # 'class_name' => permission_hash for each target have its own set of permissions # but its not a namespace so each permission name should be unique PERMISSIONS = {} @@ -20,17 +20,19 @@ module ActsAsAccessible end def affiliate(accessor, roles) - roles = [roles] unless roles.kind_of?(Array) - roles.map {|role| accessor.add_role(role, self)}.any? + roles = Array(roles) + roles.map {|role| accessor.add_role(role, self)}.any? end def disaffiliate(accessor, roles) - roles = [roles] unless roles.kind_of?(Array) - role_assignments.map{|ra|ra.destroy if roles.include?(ra.role) && ra.accessor == accessor} + roles = Array(roles) + role_assignments.map do |ra| + ra.destroy if roles.include?(ra.role) && ra.accessor == accessor + end end def roles - Role.find_all_by_environment_id(environment.id).select do |r| + Role.find_all_by_environment_id(environment.id).select do |r| r.permissions.any?{ |p| PERMISSIONS[self.class.base_class.name].include?(p) } end end diff --git a/vendor/plugins/access_control/lib/acts_as_accessor.rb b/vendor/plugins/access_control/lib/acts_as_accessor.rb index a86d49d..b0b87d0 100644 --- a/vendor/plugins/access_control/lib/acts_as_accessor.rb +++ b/vendor/plugins/access_control/lib/acts_as_accessor.rb @@ -14,7 +14,7 @@ module ActsAsAccessor end def define_roles(roles, resource) - roles = [roles] unless roles.kind_of?(Array) + roles = Array(roles) actual_roles = RoleAssignment.where(role_attributes nil, resource).map(&:role) (roles - actual_roles).each {|r| add_role(r, resource) } -- libgit2 0.21.2