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