以下のようなテーブルがあり、カラムemail1 〜 email10に入った値を削除したいのですが、カラム名を取得するメソッドがわからず立ち止まってしまいました。
ruby
1 create_table "cc_emails", force: :cascade do |t| 2 t.integer "user_id", limit: 4 3 t.string "email1", limit: 255 4 t.string "email2", limit: 255 5 t.string "email3", limit: 255 6 t.string "email4", limit: 255 7 t.string "email5", limit: 255 8 t.string "email6", limit: 255 9 t.string "email7", limit: 255 10 t.string "email8", limit: 255 11 t.string "email9", limit: 255 12 t.string "email10", limit: 255 13 t.datetime "created_at", null: false 14 t.datetime "updated_at", null: false 15 end
まずイテレータを回し、一覧表示しています。
ruby
1#index.html.erb 2 3<% cc_email = CcEmail.find_by(user_id: current_user.id) %> 4<% (1..10).each do |n| %> 5 <%= cc_email.send('email' + n.to_s) %> 6 <%= link_to mypage_delete_cc_path(user_id: current_user.id, n: n) do %> 7 <i class="fa fa-times-circle" aria-hidden="true"></i> 8 <% end %> 9 <% end %> 10<% end %>
これをコントローラで削除したいと思っていますが、以下のような実装ではうまくいきません。
ruby
1 def delete_cc 2 cc_email = CcEmail.find_by(user_id: params[:user_id]) 3 n = params[:n] 4 email_num = "email" + n.to_s 5 cc_email.update(email_num: nil) 6 redirect_to mypage_path, notice: "メールアドレスを削除しました" 7 end
cc_email.update(email_num: nil)の部分がうまくいかないのですが、カラム名を取得するメソッドがあるのでしょうか?
他のやり方等のアドバイスもありましたら、何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/04 01:09
2018/10/04 01:53
2018/10/04 02:05