File <| (owner == root or owner == bin) and group == sysadmin |> Given, tables: RailsResources, , RailsParameters ( (RailsParameters.value = 'root' and RailsParameters.map_id = RailsMap.id and RailsMap.key = 'owner' and RailsMap.resource_id = RailsResources.id and RailsResources.type = 'File') OR (RailsParameters.value = 'bin' and RailsParameters.map_id = RailsMap.id and RailsMap.key = 'owner' and RailsMap.resource_id = RailsResources.id and RailsResources.type = 'File') ) and (RailsParameters.value = 'sysadmin' and RailsParameters.map_id = RailsMap.id and RailsMap.key = 'group' and RailsMap.resource_id = RailsResources.id and RailsResources.type = 'File') ) ------ ( (RailsParameters.value = ? and RailsParameters.map_id = RailsMap.id and RailsMap.key = ? and RailsMap.resource_id = RailsResources.id and RailsResources.type = 'File') OR (RailsParameters.value = 'bin' and RailsParameters.map_id = RailsMap.id and RailsMap.key = 'owner' and RailsMap.resource_id = RailsResources.id and RailsResources.type = 'File') ) and (RailsParameters.value = 'sysadmin' and RailsParameters.map_id = RailsMap.id and RailsMap.key = 'group' and RailsMap.resource_id = RailsResources.id and RailsResources.type = 'File') ) a = [ 'root', 'owner', .... ] Resource.find_by_sql([ c, a ]) c = "select Resources.* from Resources, RailsParameters, RailsMap, RailsResources where " c << ... a << ... Resource.find_by_sql([ c, a ]) RailsParameters: id => :integer map_id => :integer (foreign key into RailsMap) value => :string RailsMap: id => :integer resource_id => :integer (foreign key into RailsResources) key => :string (e.g., "owner") RailsResources: id => :integer type => :string (the "Resource class", e.g., 'File') .... (whatever other stuff you've already got) class RailsResource < ActiveRecord::Base has_many :rails_maps end class RailsMap < ActiveRecord::Base belongs_to :rails_resource has_many :rails_parameters end --------------------------- Resource.find(:all, :conditions => [c, a])