# Oppisite of :joins on polymorphic association

**URL:** <https://www.ruby-forum.com/t/oppisite-of-joins-on-polymorphic-association/128107>\
**Category:** Rails\
**Created:** [February 5, 2008, 3:32am UTC](https://www.ruby-forum.com/t/oppisite-of-joins-on-polymorphic-association/128107 "2008-02-05T03:32:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![startrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a6a055/32.png) [@startrader](https://www.ruby-forum.com/u/startrader)\
**Post date:** [February 5, 2008, 3:32am UTC](https://www.ruby-forum.com/t/oppisite-of-joins-on-polymorphic-association/128107/1 "2008-02-05T03:32:07Z")

</div>

Here’s the setup:

class Person \<\<ActiveRecord::Base  
has\_one :address, :as=\>:addressable  
end

how would I find all persons who do NOT have an address without using  
only the database? (i.e. Person.find(:all).find\_all{|person|  
person.address.nil?} doesn’t cut it)

---

<div class="post-metadata">

**Author:** ![startrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a6a055/32.png) [@startrader](https://www.ruby-forum.com/u/startrader)\
**Post date:** [February 5, 2008, 3:33am UTC](https://www.ruby-forum.com/t/oppisite-of-joins-on-polymorphic-association/128107/2 "2008-02-05T03:33:25Z")

</div>

Starr T. wrote:

> Here’s the setup:
> 
> class Person \<\<ActiveRecord::Base  
> has\_one :address, :as=\>:addressable  
> end

oops let me try that last paragraph again

How would I find all persons who do NOT have an address using  
only the database? (i.e. Person.find(:all).find\_all{|person|  
person.address.nil?} doesn’t cut it)

---

<div class="post-metadata">

**Author:** ![startrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a6a055/32.png) [@startrader](https://www.ruby-forum.com/u/startrader)\
**Post date:** [February 5, 2008, 12:48pm UTC](https://www.ruby-forum.com/t/oppisite-of-joins-on-polymorphic-association/128107/3 "2008-02-05T12:48:53Z")

</div>

On 5 Feb 2008, at 02:33, Starr T. wrote:

> How would I find all persons who do NOT have an address using  
> only the database? (i.e. Person.find(:all).find\_all{|person|  
> person.address.nil?} doesn’t cut it)

Something like ?

Person.find :all, :joins =\> “LEFT OUTER JOIN addresses ON  
addressable\_id = people.id AND addressable\_type = ‘Person’”,  
:conditions =\> ‘addresses.id IS NULL’
