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? -- Posted via http://www.ruby-forum.com/. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 14 January 2012 01:43, Douglas B. <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> 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 > -3742XD1I164j9VU7PjUtvg@public.gmane.org > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
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 -- Posted via http://www.ruby-forum.com/. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.