has_many through issues

Hey all, I have three tables: groups(id,name) forums(id,name) permissions(group_id,forum_id,read_forum,post_replies,post_topics)

# now in script/console I do:

forum=Forum.find_first group=Group.find_first perm=Permission.create(:read_forum=>0,:post_replies=>0,:post_topics=>0) # then when I do:

group.permissions << perm

I get:

ActiveRecord::StatementInvalid: Mysql::Error: #42S22Unknown column 'id' in 'where clause': UPDATE permissions SET `read_forum` = 0, `group_id` = 5, `post_replies` = 0, `forum_id` = 5, `post_topics` = 0 WHERE id = 0

any idea what's wrong?

thanx in advance

Pat

Hello Patrick,

I have three tables: groups(id,name) forums(id,name) permissions(group_id,forum_id,read_forum,post_replies,post_topics)

If you've got Group has_many :forums, :through => :permissions and Forum has_many :groups, :through => :permissions

then your permissions table must have an id column. Your migration should look like this :

create_table :permissions do |t|   t.column :group_id, :integer   t.column :forum_id, :integer   t.column :read_forum, :integer # with some :default => 0 maybe   t.column :post_replies, :integer   t.column :post_topics, :integer end

# now in script/console I do:

forum=Forum.find_first group=Group.find_first

find :first is less deprecated thant find_first

    -- Jean-Fran├žois.