has many relation - destroy troubles

Hello, Rookie here ... learning rails and enjoying it ... having a bit-o-trouble with has many in the following scenario:

class Party < ActiveRecord::Base   has_many :target_associations, :foreign_key => 'source_party_id',                        :class_name => 'PartyAssociation',                        :dependent => :destroy

  has_many :source_associations, :foreign_key => 'target_party_id',                        :class_name => 'PartyAssociation',                        :dependent => :destroy end

class PartyAssociation < ActiveRecord::Base   belongs_to :party, :foreign_key => "source_party_id"   belongs_to :party, :foreign_key => "target_party_id" end

class CreateParties < ActiveRecord::Migration   def change     create_table :parties do |t|       t.timestamps     end   end end

class CreatePartyAssociations < ActiveRecord::Migration   def change     create_table :party_associations, :id => false do |t|       t.integer :source_party_id       t.integer :target_party_id

      t.timestamps     end   end end

This RSpec statement: it "should destroy source associations" do           @party.destroy     end

Causes this ERROR MESSAGE: ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: party_associations.: DELETE FROM "party_associations" WHERE "party_associations"."" = ?

What am I doing wrong that prevents active record from knowing how to form the delete statement?

Hello, Rookie here ... learning rails and enjoying it ... having a bit-o-trouble with has many in the following scenario:

class Party < ActiveRecord::Base has_many :target_associations, :foreign_key => 'source_party_id', :class_name => 'PartyAssociation', :dependent => :destroy

has_many :source_associations, :foreign_key => 'target_party_id', :class_name => 'PartyAssociation', :dependent => :destroy end

class PartyAssociation < ActiveRecord::Base belongs_to :party, :foreign_key => "source_party_id" belongs_to :party, :foreign_key => "target_party_id" end

class CreateParties < ActiveRecord::Migration def change create_table :parties do |t| t.timestamps end end end

class CreatePartyAssociations < ActiveRecord::Migration def change create_table :party_associations, :id => false do |t|

You should not have :id false, the table needs an id column. It is generally only when you use has_and_belongs_to_many that you do not require an id column

Colin

Uh ... ended up changing things to use the Has Many Through association ... now it all works and looks like this:

#Created a parties table class CreateParties < ActiveRecord::Migration   def change     create_table :parties do |t|       t.string :type

      t.timestamps     end   end end

#created a join table to associate one party to another class CreateAssociatedParties < ActiveRecord::Migration

  def change     create_table :associated_parties do |t|       t.integer :association_type_id       t.integer :parent_id       t.integer :child_id     end   end

end

#With a Party class like this using hmt class Party < ActiveRecord::Base

  has_many :primary_associations, :foreign_key => 'parent_id',                                   :class_name => 'AssociatedParty',                                   :dependent => :destroy   has_many :children, :through => :primary_associations

  has_many :secondary_associations, :foreign_key => 'child_id',                                     :class_name => 'AssociatedParty',                                     :dependent => :destroy   has_many :parents, :through => :secondary_associations

end

#And the join class like this class AssociatedParty < ActiveRecord::Base

  belongs_to :parent, :class_name => "Party"   belongs_to :child, :class_name => "Party"

end