###前提・実現したいこと
Ruby on Railsを使用して開発しています。
特定のカラムを初期値に設定するために、SQLを発行していますが、
同じ配列を複数回並べるなど、どうにも冗長な部分が多く感じています。
SQLの発行、発行結果の代入処理について、もっと合理的な書き方はあるでしょうか。
###該当のソースコード
ruby
1 def status_rollback 2 object_id = id 3 # 発行するSELECT文のターゲット 4 object_columns = [ 5 'DEFAULT(report)', 6 'DEFAULT(tag_1)', 7 'DEFAULT(tag_2)', 8 'DEFAULT(tag_3)', 9 'DEFAULT(tag_4)', 10 'DEFAULT(tag_5)', 11 'DEFAULT(attacked)'] 12 13 # SQLを発行 14 default_values = ActiveRecord::Base.connection.select_one( 15 "SELECT 16 #{object_columns[0]}, 17 #{object_columns[1]}, 18 #{object_columns[2]}, 19 #{object_columns[3]}, 20 #{object_columns[4]}, 21 #{object_columns[5]}, 22 #{object_columns[6]}, 23 #{object_columns[7]}, 24 FROM translations WHERE id = #{object_id};") 25 26 #値の反映 27 self.title = default_values[object_columns[0]] 28 self.report = default_values[object_columns[1]] 29 self.tag_1 = default_values[object_columns[2]] 30 self.tag_2 = default_values[object_columns[3]] 31 self.tag_3 = default_values[object_columns[4]] 32 self.tag_4 = default_values[object_columns[5]] 33 self.tag_5 = default_values[object_columns[6]] 34 self.attacked = default_values[object_columns[7]] 35 save! 36 end
###補足情報(言語/FW/ツール等のバージョンなど)
ruby 2.2.0p0 (2014-12-25 revision 49005)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/23 00:43