Help with associations

I'm new to RoR and databases in general. Here is my problem.

I have "Lists" and "Items". Instead of using a join table and a habtm relationship, I created a third model so I can hold additional data in it. It's called "Listitems". I want to be able to display only the "Items" that have not yet been added to the certain "List".

I have:

class List < ActiveRecord::Base   has_many :listitems, :dependent => true   has_many :items, :through => :listitems end

class Item < ActiveRecord::Base   has_many :listitems, :dependent => true   has_many :lists, :through => :listitems end

class Listitem < ActiveRecord::Base   belongs_to :list   belongs_to :item end

What kind of query should I be writing in my controller to get the results I want.

Untested, but I think that should do it:

  class List     OTHER_ITEMS_SQL = <<-EOF       select * from items         where not exists           (select * from list_items.item_id = items.id and list_items.list_id = ?)     EOF     # Get all items that do NOT belong to this list.     def other_items       Item.find_by_sql [OTHER_ITEMS_SQL, self.id]     end   end

I think I'm still misunderstanding. I read the blogpost and tried doing:

class List < ActiveRecord::Base   has_many :items, :through => :listitems do     def not       find(:conditions => ["items.id != ?", proxy_owner.id])     end   end end

I then try looping through

<% for item in @list.items.not %>   <% item.name %> <% end%>

I get the error "Couldn't find Item without an ID"

I ended up using in my view:

<% for item in @items %>   <% unless @list.items.include?(item) %>              [CODE] etc etc etc

It's messy, but it seems to work