12/08/2018, 14:16

Activerecord Import Gem

Activerecord là một gem dùng để import nhiều bản ghi cùng một lúc vào cơ sở dữ liệu. Cài đặt gem gem 'activerecord-import', '~> 0.10.0' Yêu cầu Đối với rails 5.0 cần sử dụng version 0.11.0 hoặc cao hơn Đối với rails 4.0 cần sử dụng activerecord-import 0.4.0 hoặc cao hơn ...

Activerecord là một gem dùng để import nhiều bản ghi cùng một lúc vào cơ sở dữ liệu.

  1. Cài đặt gem

    gem 'activerecord-import', '~> 0.10.0'

  2. Yêu cầu

    Đối với rails 5.0 cần sử dụng version 0.11.0 hoặc cao hơn

    Đối với rails 4.0 cần sử dụng activerecord-import 0.4.0 hoặc cao hơn

    Rails 3.2.x trở lên, trừ 4.0 dùng activerecord-import 0.3.0 hoặc hơn

  3. Cài đặt sử dụng

    Ta có

    model User.rb
    class User < ApplicationRecord
        has_many :user_functions, dependent: :destroy
        has_many :functions, through: :user_functions

     Model Function.rb
    class Function < ApplicationRecord
      has_many :user_functions, dependent: :destroy
      has_many :users, through: :user_functions
    end

    Model UserFunction.rb

    class UserFunction < ApplicationRecord
      belongs_to :user
      belongs_to :function
    end

Để lưu tất cả các userfunction của 1 user ta dùng activerecord-import như sau:
puts "create function for trainers"
    trainers = []
    Trainer.all.each do |trainer|
      Function.all.each do |function|
        trainers << trainer.user_functions.new(function: function, user: trainer, role_type: 1)
      end
    end
    UserFunction.import trainers
0