Difficult model.find


Hi all!

I have this declaration model: http://pastie.caboo.se/83840

What I want to do:
get all users that not belong to the declaration.

I could do a loop. First get all the users. I know who belong to the
declaration, so I also know who does not.
But this seems like a lot of looping.

Is there an easy way I can get all those users that NOT belong to the
declaration? I looked into using joins in my find, but I don’t know how
to use that in this context.

Thanks in advance!


I can only think of doing it in Ruby:

def other_users
User.find(:all) - self.users

there must be a more efficient way to do it via ActiveRecord
(therefore, only one query), something like

def other_users
User.find :all, :conditions => [“declaration_id <> ?”, self.id]

(or something like that, you get the idea, it’s awfully not



On Jul 31, 5:33 pm, Leon B. removed_email_address@domain.invalid


Leon, I think a left outer join of Users on Declarations would do

in SQL that would be:
SELECT * from Users left outer join Declarations ON Users.user_id =
Declarations.user_id WHERE Declarations.user_id IS NULL

in ActiveRecord, an :includes does a left outer join so (I may not get
this 100% right)
User.find(:all, :conditions => “declarations.user_id is
NULL”, :include => “declarations”)

Cheers, --Kip

On Aug 1, 4:33 am, Leon B. removed_email_address@domain.invalid