開発環境
ruby 2.6.5
Ruby on Rails 5.2.5
本題
@ranking1 = Ranking.find_by(user_id: ranking_user_id, rank: 1)
@ranking2 = Ranking.find_by(user_id: ranking_user_id, rank: 2)
@ranking3 = Ranking.find_by(user_id: ranking_user_id, rank: 3)
こんなコードがあり、リファクタリングしたかった
まずは普通に
3.times do |n|
@ranking "#{n+1}" = Ranking.find_by(user_id: ranking_user_id, rank: n + 1)
end
とかしてみる
しかしシンタックスエラー
書き方が悪いのかなっておもっていろいろやってみたけど
どうやら変数名に変数はいれられないみたい
この記事を参考にさせて頂いた。
どうやら変数名に変数をいれるメソッドがあるらしい
参考にしながら
3.times do |n|
ranking = Ranking.find_by(user_id: ranking_user_id, rank: n + 1)
instance_variable_set("@ranking#{n+1}", ranking )
end
でいけた