Bad rails day for Matt- In a migration, for a habtm: create_table :teams_users do |t| t.column :team_id, :integer t.column :user_id, :integer end Ok, fine. In a controller (well really a migration script): @user.teams << Team.find( 3 ) And the SQL pumped at my server is: INSERT INTO teams_users (`team_id`, `id`, `user_id`) VALUES (3, 3, 34) Which promptly fails, because the id column already has a row with the id of 3. I see one immediate solution: 1) after create_table, remove_column :teams_users, ''id''. If that''s even legal. Would be nice if create_table had it as an option to not make an ID column, but this''ll do. But that seems sort of hackneyed. Is is a bug that the ID column is being manually populated by rails? Doesn''t seem very senseble, especially if the content of ID is always the same as team_id. Bug? Feature? -- Matthew Beale :: mixonic@synitech.com Resume & Portfolio @ http://madhatted.com -- Posted via http://www.ruby-forum.com/.
Matthew Beale wrote:> Bad rails day for Matt-But good day for answering my own questions.> 1) after create_table, remove_column :teams_users, ''id''. If that''s even > legal. Would be nice if create_table had it as an option to not make an > ID column, but this''ll do.That''s what this guy suggests: http://textsnippets.com/posts/show/340 And there is a key disable, it just wasn''t under the general migrations documentation, it''s under the docs for the create_table method. Still pretty ugly though. -- Matthew Beale :: mixonic@synitech.com Resume & Portfolio @ http://madhatted.com -- Posted via http://www.ruby-forum.com/.
Check out http://wiki.rubyonrails.com/rails/pages/UsingMigrations The Tables section tells you how to avoid adding an ID column in automatically. -Nick On 4/3/06, Matthew Beale <mixonic@synitech.com> wrote:> Bad rails day for Matt- > > In a migration, for a habtm: > > create_table :teams_users do |t| > t.column :team_id, :integer > t.column :user_id, :integer > end > > Ok, fine. In a controller (well really a migration script): > > @user.teams << Team.find( 3 ) > > And the SQL pumped at my server is: > > INSERT INTO teams_users (`team_id`, `id`, `user_id`) VALUES (3, 3, 34) > > Which promptly fails, because the id column already has a row with the > id of 3. I see one immediate solution: > > 1) after create_table, remove_column :teams_users, ''id''. If that''s even > legal. Would be nice if create_table had it as an option to not make an > ID column, but this''ll do. > > But that seems sort of hackneyed. Is is a bug that the ID column is > being manually populated by rails? Doesn''t seem very senseble, > especially if the content of ID is always the same as team_id. Bug? > Feature? > > -- > Matthew Beale :: mixonic@synitech.com > Resume & Portfolio @ http://madhatted.com > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >