質問: ary[6].to_i ・ ・ ・ ・ ・ ・ このコーディングは変えたくない, そして、数箇所繰り返して出現するとします。 当然同じものをコーディングしたくありません。 従って、どこか一か所に書いて共有して使えれば 便利ですし、コーディングミスも防げます。 --- フィールド名は違うかも知れないが内容は殆んど 同じです。renderで理解できないエラーが出たのと、 newとeditのアクションはコンピューターで判断 させた方がユーザーには親切だと思い、つまり 入力でキーが重複したときは自動的にedit画面に 導いた方がユーザは助かります。 そしてrenderを使わないで、すべてredirect_toで入力ミスを返しているので アクション毎の入力データをすべてファイルで管理する 必要が有り、配列データで各フィールの値を持っています。 そして配列フィールドから最終的にマスターに登録します。 確かに異常なコーディングかもしれません。でもひと昔の 言語cobol等では簡単にできたものです。そして普通でした。
回答: 例えば以下のようなメソッドではいかがでしょうか。 ``` # 定義 def set_file_field_with_ary(file, ary) file.field_a = ary[1] file.field_b = ary[2] file.field_c = ary[5] file.field_d = ary[6].to_i end # 使用 set_file_field_with_ary(filea, ary) ``` 参照渡しについての補足: メソッドから変更対象のオブジェクト(`file`)を `return` していないのは、メソッドに渡されるのがオブジェクトの参照である事によります。 つまり、上のメソッドはオブジェクトのコピーを操作しているのではなく、元のオブジェクトその物を変更しています。 いわゆる「破壊的」メソッドです。 実行: ``` ary[1] = "あいう" set_file_field_with_ary(filea, ary) puts "変数 filea の 'field_a' の値: #{filea.field_a}" ary[1] = "ABC" set_file_field_with_ary(filea, ary) puts "変数 filea の 'field_a' の値: #{filea.field_a}" ``` 出力: ``` 変数 filea の 'field_a' の値: あいう 変数 filea の 'field_a' の値: ABC ``` 「Ruby 参照渡し」などのキーワードで検索すると、色々と解説があると思います。 (もちろん、戻り値として返した方が都合がいい場合もありますし、それでもまったく構いません)