Skip to content

Instantly share code, notes, and snippets.

@toshimaru
Last active July 14, 2023 06:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toshimaru/c3d319e739a68c7ad1a375c559c3b83a to your computer and use it in GitHub Desktop.
Save toshimaru/c3d319e739a68c7ad1a375c559c3b83a to your computer and use it in GitHub Desktop.
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gem "activerecord"
gem "sqlite3"
gem "enumerize" #, '2.6.1'
gem "activerecord-import"
end
require "active_record"
require "minitest/autorun"
require "logger"
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :users, force: true do |t|
t.boolean :role
end
end
require 'enumerize'
class User < ActiveRecord::Base
extend Enumerize
enumerize :role, in: { user: 0, admin: 1 }
end
# insert_all
User.insert_all!([{role: 1}])
User.insert_all!([{role: :user}])
# import
User.import!([{role: 1}])
User.import!([{role: :user}])

enumerize 2.6.1

TRANSACTION (0.0ms)  commit transaction
User Insert (0.0ms)  INSERT INTO "users" ("role") VALUES (1)
User Insert (0.0ms)  INSERT INTO "users" ("role") VALUES (0)
TRANSACTION (0.0ms)  begin transaction
User Create Many (0.0ms)  INSERT INTO "users" ("role") VALUES (1)
TRANSACTION (0.0ms)  commit transaction
TRANSACTION (0.0ms)  begin transaction
User Create Many (0.0ms)  INSERT INTO "users" ("role") VALUES ('user')
TRANSACTION (0.0ms)  commit transaction

enumerize 2.7.0

TRANSACTION (0.0ms)  commit transaction
User Insert (0.0ms)  INSERT INTO "users" ("role") VALUES (1)
User Insert (0.0ms)  INSERT INTO "users" ("role") VALUES (0)
TRANSACTION (0.0ms)  begin transaction
User Create Many (0.0ms)  INSERT INTO "users" ("role") VALUES ('admin')
TRANSACTION (0.0ms)  commit transaction
TRANSACTION (0.0ms)  begin transaction
User Create Many (0.0ms)  INSERT INTO "users" ("role") VALUES ('user')
TRANSACTION (0.0ms)  commit transaction
Run options: --seed 14567

Diff

1 is converted to admin on import!.

- INSERT INTO "users" ("role") VALUES (1)
+ INSERT INTO "users" ("role") VALUES ('admin')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment