的Mysql ::错误:复制与共轨入口Asssociation

问题描述:

我有一个简单的has_and_belongs_to_many协会:的Mysql ::错误:复制与共轨入口Asssociation

class CardSignup < ActiveRecord::Base 
    has_and_belongs_to_many :emails 
end 

class Email < ActiveRecord::Base 
    has_and_belongs_to_many :card_signups 
end 

如果我指定的电子邮件给一个ID它工作正常的..

User.find(y) << Email.find(10) 

但是,如果我尝试将相同的电子邮件分配给另一个用户,我得到这个:

ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '10' for key 'PRIMARY': INSERT INTO `card_signups_emails` (`id`, `card_signup_id`, `email_id`) VALUES (10, 1505, 10) 

好吧,为了解决这需要确保在使用HABTM关联时,将表设置为false id。如此:

create_table(:emails_users, :id => false) do |t| 
    t.string :user_id 
    t.string :email_id 
end