+++ date = "2009-06-07" title = "has_one - find all that have no associated object" tags = ["General", "Ruby", "Rails", "has_one", "has_many", "belongs_to"] slug = "has_one-find-all-that-have-no-associated-object" +++ Let me pose a typical Rails situation: ```ruby class Person < ActiveRecord::Base has_one :fancy_hat end class FancyHat < ActiveRecord::Base belongs_to :person end ``` Now, how can you get all the people that don't have a fancy hat? ```ruby class Person < ActiveRecord::Base has_one :fancy_hat named_scope :hatless, :joins => 'LEFT JOIN fancy_hats ON fancy_hats.person_id = people.id', :conditions => 'fancy_hats.person_id IS NULL' end ``` Now you can find all the hatless people you want. FYI: Finding fancy hats that have no one to wear them is a lot easier, because the foreign key is stored in the fancy_hats table. ```ruby class FancyHat < ActiveRecord::Base belongs_to :person named_scope :wearerless, :conditions => { :person_id => nil } end ```