From da1ec59acda83b9114aeb410c99b1ce6e0866648 Mon Sep 17 00:00:00 2001 From: Florent Monbillard Date: Thu, 26 Apr 2012 13:12:18 -0400 Subject: [PATCH] fixed a syntax error using MySQL (double quotes around table names) fixes #65 --- .../adapters/active_record/resource_adapter.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/rolify/adapters/active_record/resource_adapter.rb b/lib/rolify/adapters/active_record/resource_adapter.rb index 0ead4fa0..19b6799b 100644 --- a/lib/rolify/adapters/active_record/resource_adapter.rb +++ b/lib/rolify/adapters/active_record/resource_adapter.rb @@ -4,13 +4,19 @@ module Rolify module Adapter class ResourceAdapter < ResourceAdapterBase def resources_find(roles_table, relation, role_name) - resources = relation.joins("INNER JOIN \"#{roles_table}\" ON \"#{roles_table}\".\"resource_type\" = '#{relation.to_s}'") - resources = resources.where("#{roles_table}.name = ? AND #{roles_table}.resource_type = ?", role_name, relation.to_s) + resources = relation.joins("INNER JOIN #{quote(roles_table)} ON #{quote(roles_table)}.resource_type = '#{relation.to_s}'") + resources = resources.where("#{quote(roles_table)}.name = ? AND #{quote(roles_table)}.resource_type = ?", role_name, relation.to_s) resources end def in(relation, roles) - relation.where("#{role_class.to_s.tableize}.id IN (?) AND ((resource_id = #{relation.table_name}.id) OR (resource_id IS NULL))", roles) + relation.where("#{quote(role_class.to_s.tableize)}.id IN (?) AND ((resource_id = #{quote(relation.table_name)}.id) OR (resource_id IS NULL))", roles) + end + + private + + def quote(column) + ActiveRecord::Base.connection.quote_column_name column end end end