title: Rails has_many :through PG::Error: ERROR: column reference "id" is ambiguous error
body: <p>I'm new to rails and I've been trying to get two has_many :though relationships to work out (as opposed to using has_and_belongs_to_many as explained by this post <a href="http://blog.flatironschool.com/post/35346328762/why-you-dont-need-has-and-belongs-to-many">http://blog.flatironschool.com/post/35346328762/why-you-dont-need-has-and-belongs-to-many</a>) but am now running into a Postgres error:</p>
  
  <pre><code>PG::Error: ERROR:  column reference "id" is ambiguous
  LINE 1: ...on_id" IS NULL AND "components"."id" = 1 ORDER BY id ASC LIM...
                                                               ^
  : SELECT  1 AS one FROM "components" INNER JOIN "collection_components" ON "components"."id" = "collection_components"."component_id" WHERE "collection_components"."collection_id" IS NULL AND "components"."id" = 1 ORDER BY id ASC LIMIT 1
    Rendered collections/_form.html.haml (117.0ms)
    Rendered collections/new.html.haml within layouts/application (143.5ms)
  Completed 500 Internal Server Error in 164ms
  
  ActiveRecord::StatementInvalid - PG::Error: ERROR:  column reference "id" is ambiguous
  LINE 1: ...on_id" IS NULL AND "components"."id" = 1 ORDER BY id ASC LIM...
                                                               ^
  </code></pre>
  
  <p><strong>_form.html.haml</strong></p>
  
  <pre><code>= form_for @collection do |f|
    - if @collection.errors.any?
      #error_explanation
        %h1= "#{pluralize(@collection.errors.count, "error")} prohibited this collection from being saved:"
        %ul
          - @collection.errors.full_messages.each do |msg|
            %li= msg
  
    .field
      - Component.all.each do |component|
        = label_tag :component_ids, component.id
        = check_box_tag :component_ids, component.id, @collection.components.include?(component), :name =&gt; 'collection[component_ids][]'
    .field
      = f.label :title
      = f.text_field :title
    .actions
      = f.submit 'Save'
  </code></pre>
  
  <p><strong>collection_component.rb</strong></p>
  
  <pre><code>class CollectionComponent &lt; ActiveRecord::Base
    attr_accessible :collection_id, 
                    :component_id
  
    belongs_to      :collection
    belongs_to      :component
  end
  </code></pre>
  
  <p><strong>collection.rb</strong></p>
  
  <pre><code>class Collection &lt; ActiveRecord::Base
    default_scope order('id ASC')
  
    attr_accessible         :style_id, 
                            :name, 
                            :title,
                            :component
  
    #has_and_belongs_to_many :components
  
    has_many                :collection_components, :dependent =&gt; :destroy
    has_many                :components, :through =&gt; :collection_components
  
    belongs_to              :style
  
    validates_presence_of   :style
    validates_presence_of   :title
  
    before_save             :create_name
  
    private
  
    def create_name
      self.name = title.parameterize
    end
  end
  </code></pre>
  
  <p><strong>component.rb</strong></p>
  
  <pre><code>class Component &lt; ActiveRecord::Base
    default_scope order('id ASC')
  
    attr_accessible         :category_id, 
                            :name, 
                            :title,
                            :collection,
                            :style
  
    has_many                :collection_components, :dependent =&gt; :destroy
    has_many                :collections,   :through =&gt; :collection_components
  
    has_many                :component_styles
    has_many                :styles,        :through =&gt; :component_styles
  
    belongs_to              :category
  
    validates_presence_of   :category
    validates_presence_of   :title
  
    before_save             :create_name
  
    private
  
    def create_name
      self.name = title.parameterize
    end
  end
  </code></pre>
  
  <p><strong>collection_components table</strong></p>
  
  <pre><code>Column     |            Type             |                             Modifiers                              
  ---------------+-----------------------------+--------------------------------------------------------------------
   id            | integer                     | not null default nextval('collection_components_id_seq'::regclass)
   collection_id | integer                     | 
   component_id  | integer                     | 
   created_at    | timestamp without time zone | not null
   updated_at    | timestamp without time zone | not null
  Indexes:
      "collection_components_pkey" PRIMARY KEY, btree (id)  
  </code></pre>
  
  <p><strong>collections table</strong></p>
  
  <pre><code>Column   |            Type             |                        Modifiers                         
  ------------+-----------------------------+----------------------------------------------------------
   id         | integer                     | not null default nextval('collections_id_seq'::regclass)
   style_id   | integer                     | 
   name       | character varying(255)      | 
   title      | character varying(255)      | 
   created_at | timestamp without time zone | not null
   updated_at | timestamp without time zone | not null
  Indexes:
      "collections_pkey" PRIMARY KEY, btree (id)
  </code></pre>
  
  <p><strong>components table</strong></p>
  
  <pre><code>   Column    |            Type             |                        Modifiers                        
  -------------+-----------------------------+---------------------------------------------------------
   id          | integer                     | not null default nextval('components_id_seq'::regclass)
   name        | character varying(255)      | 
   title       | character varying(255)      | 
   category_id | integer                     | 
   created_at  | timestamp without time zone | not null
   updated_at  | timestamp without time zone | not null
  Indexes:
      "components_pkey" PRIMARY KEY, btree (id)
  </code></pre>