I have an association such that a Person has many Events :through
Attendees. When I attempt to destroy a Person object, I get the
following exception:
ActiveRecord::StatementInvalid in PeopleController#destroy
Mysql::Error: #42S22Unknown column ‘id’ in ‘where clause’:
DELETE FROM attendees
WHERE id
= NULL
There is no column id
by design so it’s not surprising that I get
the error. Why is Rails looking for an id?
SCHEMA:
ActiveRecord::Schema.define(:version => 3) do
create_table “attendees”, :id => false, :force => true do |t|
t.column “event_id”, :integer
t.column “person_id”, :integer
t.column “bit_flags”, :integer
end
add_index “attendees”, [“event_id”], :name =>
“index_attendees_on_event_id”
add_index “attendees”, [“person_id”], :name =>
“index_attendees_on_person_id”
create_table “events”, :force => true do |t|
t.column “name”, :string
t.column “description”, :text
t.column “event_date”, :date
t.column “start_time”, :time
t.column “end_time”, :time
t.column “last_register_date”, :date
t.column “location_city”, :string
t.column “location_state”, :string, :limit => 2
t.column “location_zip”, :string, :limit => 9
t.column “location_addr”, :text
t.column “agenda”, :text
t.column “contacts”, :text
end
create_table “people”, :force => true do |t|
t.column “first_name”, :string
t.column “last_name”, :string
t.column “title”, :string
t.column “organization”, :string
t.column “email”, :string
t.column “phone1”, :string
t.column “phone2”, :string
end
end
MODELS:
class Person < ActiveRecord::Base
has_many :attendees, :dependent => :destroy
has_many :events, :through => :attendees, :uniq => true
end
class Event < ActiveRecord::Base
has_many :attendees, :dependent => :destroy
has_many :people, :through => :attendees, :uniq => true
end
class Attendee < ActiveRecord::Base
belongs_to :event
belongs_to :person
end
Any ideas? Thanks,
Stan