Rails amoeba gem не копирует отношение многие ко многим

У меня проблема с копированием записей базы данных. У меня есть простая модель User, которая содержит отношение "один ко многим" с моделью языка и отношение "многие ко многим" с моделью навыка. Я хотел использовать драгоценный камень амеба для копирования записей со всеми ассоциациями. Копирование "один ко многим" работает хорошо, но "многие ко многим" не копирует вообще.

Вот код модели User и Skill:

user.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

skill.rb

class Skill < ActiveRecord::Base
  has_and_belongs_to_many :users
end

У меня также есть миграционные файлы, в которых хранятся таблицы пользователей, skill и skill_users:

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

Действие контроллера "show" в 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

Что может вызвать проблему?

1 ответ

Хорошо, я нашел ошибку. я написал

@user_copy = @user.dup 

в файле контроллера вместо

@user_copy = @user.amoeba_dup
Другие вопросы по тегам