sequenceというものを使ってテストデータを作成すると、テストデータをいい感じに作ることができる。
FactoryBot.define do
factory :user do
sequence(:name) { |n| "ごりら#{n}" }
end
end
このような形でspec/factories/user.rbに記述する。
そして、rails cでuserを作成してみる。
irb(main):001:0> FactoryBot.create(:user)
(2.4ms) SET NAMES utf8mb4 COLLATE utf8mb4_bin, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
(2.3ms) BEGIN
User Create (3.1ms) INSERT INTO `users` (`name`, `created_at`, `updated_at`) VALUES ('ごりら1', '2021-08-23 08:32:54.454786', '2021-08-23 08:32:54.454786')
(7.8ms) COMMIT
=> #<User id: 11, name: "ごりら1", created_at: "2021-08-22 23:32:54", updated_at: "2021-08-22 23:32:54">
もう一度同じくcreateしてみる。
irb(main):002:0> FactoryBot.create(:user)
(2.9ms) BEGIN
User Create (6.2ms) INSERT INTO `users` (`name`, `created_at`, `updated_at`) VALUES ('ごりら2', '2021-08-23 08:33:04.147878', '2021-08-23 08:33:04.147878')
(8.2ms) COMMIT
=> #<User id: 12, name: "ごりら2", created_at: "2021-08-22 23:33:04", updated_at: "2021-08-22 23:33:04">
これでuser.nameごりら1とごりら2を作成することができた。