On 14 January 2012 01:43, Douglas B. <[email protected]> wrote:
> 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

>      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?

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to