has_many :through with a has_one source

Here is my simple example...

require 'rubygems' require 'active_record'

ActiveRecord::Base.establish_connection :adapter => "sqlite3", :database => "has_many_through.db" ActiveRecord::Schema.define do   create_table "containers", :force => true do |t|     t.column :name, :string   end

  create_table "shapes", :force => true do |t|     t.column :name, :string     t.column :container_id, :integer   end

  create_table "colors", :force => true do |t|     t.column :name, :string     t.column :shape_id, :integer   end end

class Container < ActiveRecord::Base   has_many :shapes   has_many :colors, :through => :shapes end

class Shape < ActiveRecord::Base   has_one :color end

class Color < ActiveRecord::Base end

container = Container.create! :name => "Container 1" shape1 = container.shapes.create! :name => "Shape 1" shape2 = container.shapes.create! :name => "Shape 2" shape3 = container.shapes.create! :name => "Shape 3" shape1.create_color :name => "Color 1"

puts container.colors.inspect

reflection.rb:191 check and makes sure the source is either a belongs_to or has_many... Why is has_one excluded?