views:

308

answers:

2

Hi all,

I have a table called Users (class User < ActiveRecord::Base) and a subclass/STI of it for Clients (class Client < User).

Client "filtering" works as expected, in other words Client.find(:all) works to find all the clients.

However, for users I need to filter the result to only find users that are NOT clients (where type is null or blank).

I've tried the following in my index controller but no matter what I put for the type it returns all users regardless of type.

User.find(:all, :conditions => { :type => nil }, :order => 'name')

Any clue on how to get this condition to work?

Thanks!

+1  A: 

I don't know how the attribute 'type' is filled. But if type is a database column you'll be able to filter it by an appropriate SQL expression:

User.find(:all, :conditions => [ " type=null or type='' "])

Or do you mean the function "class"? "type" is deprecated as far as I know. IRB states: warning: Object#type is deprecated; use Object#class

Achim Tromm
Tried that but still doesn't filter the type for some reason. It's driving me crazy.
slythic
A: 

Ok, figured it out!

The app uses a lib for the default controller methods (similar to resource_controller) and I was incorrectly overwriting the index method in the user controller.

Thanks for the help Achim!!

slythic