Unknown column 'id' in 'where clause': DELETE FROM `roles` WHERE `id` = NULL

Hi,

I have a Modul model and a Role model. Each modul can have many roles.
So when the modul is deleted, it should delete the roles also.
I have the following in my Modul model:

has_many :roles, :dependent => :destroy

When i run some_object.destroy from the console, i get the following
error:

ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'id' in
'where clause': DELETE FROM `roles` WHERE `id` = NULL
        from C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/
activerecord-2.3.3/lib/active_record/connection_adapters/abstract_ada
pter.rb:212:in `log'
        from C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/
activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapte
r.rb:320:in `execute'
        from C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/
activerecord-2.3.3/lib/active_record/connection_adapters/abstract/dat
abase_statements.rb:265:in `update_sql'
        from C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/
activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapte
r.rb:335:in `update_sql'
        from C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/
activerecord-2.3.3/lib/active_record/connection_adapters/abstract/dat

Does anyone have any idea?

Thanks,
Pratik

Role Model:

Role Model:

create_table :roles, :id => false do |t|
t.integer :user_id
t.integer :modul_id
t.string :role
end

There's your problem - rails expects your model to have a primary key;
your one doesn't

Fred

Then what is the workaround to this?
I even tried this in Modul.rb
before_destroy { |record| Role.destroy_all "modul_id = #{record.id}" }

can i run a sql query of my own ?

Thanks,
Pratik

Then what is the workaround to this?

Why not let roles have a primary key? - there will be other stuff that
breaks if it doesn't

Fred

Then what is the workaround to this?

Just remove the id => false from the roles table.

Colin