我在复制数据库记录时遇到问题。我有一个简单的模型用户,它包含与语言模型的一对多关系和与技能模型的多对多关系。我想使用 amoeba gem 来复制所有关联的记录。一对多复制工作正常,但多对多根本不复制。
这是用户和技能模型的代码:
用户.rb
class User < ActiveRecord::Base
belongs_to :language
has_and_belongs_to_many :skills
validates_presence_of :email, :name
validates :email,
presence: { with: true, message: "cannot be empty" },
uniqueness: { with: true, message: "already exists in database" }
amoeba do
enable
end
end
技能.rb
class Skill < ActiveRecord::Base
has_and_belongs_to_many :users
end
我还有创建用户、技能和技能用户表的迁移文件:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name, null: false
t.string :email, null: false
t.references :language
t.timestamps null: false
end
end
end
.
class CreateSkills < ActiveRecord::Migration
def change
create_table :skills do |t|
t.string :name
t.timestamps null: false
end
end
end
.
class AddUsersSkillsTable < ActiveRecord::Migration
def change
create_table 'skills_users', :id => false do |t|
t.column :user_id, :integer
t.column :skill_id, :integer
end
end
end
users_controller 中的控制器操作“显示”如下所示:
def copy
@user_copy = @user.dup
if @user_copy.save(validate: false)
redirect_to action: "index"
end
end
我尝试像这样在 user.rb 中复制关系,但它没有用:
amoeba do
enable
clone [:skills]
end
什么可能导致问题?