ActiveRecordで生SQLを使わず重複除外し主キーも残す

よく見るやつ

Model.where(id: 1).select(:hope_column).distinct

→主キーが全部nilになってしまうのでNG。

うまく行ったもの

Model.where(id: 1).group(:hope_column).maximum(:id).values
Model.where(id: 1).group(:hope_column).maximum(:id).keys

これで良い感じの配列になる。
希望によって.group(:hope_column) のところを、
.group(:hope_column, :another_column) とかしても使えそう。

teratail.com

Railsでstringの日付をI18n.l()したいのにできない時

time = "2000年1月1日"
I18n.l(time.strftime("%Y/%m/%d").to_date)

みたいに一旦strftimeとto_dateでdateにする。
元の形式によってはスマートにやれる。
time系のI18n使いたい時はto_timeとかto_datetime必要かも。

FactoryBotで連番データを複数作成

factories/domain_name.rb的なファイル

factory :domain_name, class: Example do
   sequence(:name) {|n| "名前#{n}"}
end

specファイル側

create_list(:domain_name, 3)

これで名前1,名前2,名前3みたいな
3つのレコードができる。