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!
on 2007-08-01 00:33
on 2007-08-01 18:32
I can only think of doing it in Ruby: def other_users User.find(:all) - self.users end 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] end (or something like that, you get the idea, it's awfully not abstracted). Bye, nachokb On Jul 31, 5:33 pm, Leon B. <firstname.lastname@example.org>
on 2007-08-02 05:00
Leon, I think a left outer join of Users on Declarations would do it. 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. <email@example.com>