前提・実現したいこと
Ruby on railsでオリジナル釣果投稿アプリケーションを作っているのですが、
ユーザー管理機能でdevise導入後にanglerユーザーとagentユーザーに分けてそれぞれユーザー管理機能を実装しているところです。
agentユーザーではenumを使って都道府県と業種と釣り方をプルダウン選択を実装しデータベース側に情報を保存したいです。
発生している問題・エラーメッセージ
新規登録はできるが、enumで選択された値が全て0で保存されてしまう。
該当のソースコード
app>model>agent.rb
ruby
1class Agent < ApplicationRecord 2 3 4 # Include default devise modules. Others available are: 5 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 6 devise :database_authenticatable, :registerable, 7 :recoverable, :rememberable, :validatable 8 9 enum prefecture: { 10 "--都道府県--":0,北海道:1,青森県:2,岩手県:3,宮城県:4,秋田県:5,山形県:6,福島県:7, 11 茨城県:8,栃木県:9,群馬県:10,埼玉県:11,千葉県:12,東京都:13,神奈川県:14, 12 新潟県:15,富山県:16,石川県:17,福井県:18,山梨県:19,長野県:20, 13 岐阜県:21,静岡県:22,愛知県:23,三重県:24, 14 滋賀県:25,京都府:26,大阪府:27,兵庫県:28,奈良県:29,和歌山県:30, 15 鳥取県:31,島根県:32,岡山県:33,広島県:34,山口県:35, 16 徳島県:36,香川県:37,愛媛県:38,高知県:39, 17 福岡県:40,佐賀県:41,長崎県:42,熊本県:43,大分県:44,宮崎県:45,鹿児島県:46,沖縄県:47 18 }, _prefix: true 19 20 enum ship_type: { 21 "--業種--":0, 22 乗合:1,仕立:2,渡船:3,筏・カセ:4,レンタルボート:5,その他:6 23 }, _prefix: true 24 25 enum fishing_type: { 26 "--釣り方--":0, 27 コマセ(撒き餌):1,サビキ:2,胴突き:3,活きエサ・泳がせ:4,天びん:5,五目釣り:6,磯釣り:7, 28 筏・カセ釣り:8,スッテ・ツノ:9,エギング:10,タイラバ:11, ひとつテンヤ:12,ジギング・キャスティング:13, 29 その他の釣り方:14 30 }, _prefix: true 31end 32
app>controller>agents>registration_controller.rb
ruby
1class Agents::RegistrationsController < Devise::RegistrationsController 2 before_action :configure_sign_up_params, only: [:create] 3 # before_action :configure_account_update_params, only: [:update] 4 5 # GET /resource/sign_up 6 def new 7 #@results = Agent.where('prefecture_id IN(?)', params[:prefecture_id]) 8 super 9 end 10 11 # POST /resource 12 # def create 13 # super 14 # end 15 16 # GET /resource/edit 17 # def edit 18 # super 19 # end 20 21 # PUT /resource 22 # def update 23 # super 24 # end 25 26 # DELETE /resource 27 # def destroy 28 # super 29 # end 30 31 # GET /resource/cancel 32 # Forces the session data which is usually expired after sign 33 # in to be expired now. This is useful if the user wants to 34 # cancel oauth signing in/up in the middle of the process, 35 # removing all OAuth session data. 36 # def cancel 37 # super 38 # end 39 40 # protected 41 42 # If you have extra params to permit, append them to the sanitizer. 43 def configure_sign_up_params 44 devise_parameter_sanitizer.permit(:sign_up, keys: [:attribute, :agentname, :agentname_kana, :first_name, :last_name, :first_name_kana, :last_name_kana, :prefecture_id, :address, :harbor, :how_to_go1, :how_to_go2, :tel1, :tel2, :homepage, :regular_holiday, :ice, :target, :ship_type_id, :fishing_type_id, :profile]) 45 end 46 47 # If you have extra params to permit, append them to the sanitizer. 48 # def configure_account_update_params 49 # devise_parameter_sanitizer.permit(:account_update, keys: [:attribute]) 50 # end 51 52 # The path used after sign up. 53 # def after_sign_up_path_for(resource) 54 # super(resource) 55 # end 56 57 # The path used after sign up for inactive accounts. 58 # def after_inactive_sign_up_path_for(resource) 59 # super(resource) 60 # end 61end 62
erb
1<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 2中略 3<--! 都道府県のプルダウン --> 4<div class="form-group"> 5 <div class='form-text-wrap'> 6 <label class="form-text">都道府県</label> 7 <span class="indispensable">必須</span> 8 </div> 9 <%= f.select(:prefecture_id, Agent.prefectures.keys,{}, {class: 'hoge'}) %> 10 </div> 11 12中略 13<--! 業種と釣り方のプルダウン --> 14<div class="form-group"> 15 <div class='form-text-wrap'> 16 <label class="form-text">主な業種</label> 17 <span class="indispensable">必須</span> 18 </div> 19 <%= f.select(:ship_type_id, Agent.ship_types.keys,{}, {class: 'hoge'}) %> 20 </div> 21<div class="form-group"> 22 <div class='form-text-wrap'> 23 <label class="form-text">主な釣り方</label> 24 <span class="indispensable">必須</span> 25 </div> 26 <%= f.select(:fishing_type_id, Agent.fishing_types.keys,{}, {class: 'hoge'}) %> 27 </div> 28中略
ページのソースコード
html
1 <select class="hoge" name="agent[prefecture_id]" id="agent_prefecture_id"><option value="--都道府県--">--都道府県--</option> 2<option value="北海道">北海道</option> 3<option value="青森県">青森県</option> 4<option value="岩手県">岩手県</option> 5<option value="宮城県">宮城県</option> 6<option value="秋田県">秋田県</option> 7<option value="山形県">山形県</option> 8<option value="福島県">福島県</option> 9<option value="茨城県">茨城県</option> 10<option value="栃木県">栃木県</option> 11<option value="群馬県">群馬県</option> 12<option value="埼玉県">埼玉県</option> 13<option value="千葉県">千葉県</option> 14<option value="東京都">東京都</option> 15<option value="神奈川県">神奈川県</option> 16<option value="新潟県">新潟県</option> 17<option value="富山県">富山県</option> 18<option value="石川県">石川県</option> 19<option value="福井県">福井県</option> 20<option value="山梨県">山梨県</option> 21<option value="長野県">長野県</option> 22<option value="岐阜県">岐阜県</option> 23<option value="静岡県">静岡県</option> 24<option value="愛知県">愛知県</option> 25<option value="三重県">三重県</option> 26<option value="滋賀県">滋賀県</option> 27<option value="京都府">京都府</option> 28<option value="大阪府">大阪府</option> 29<option value="兵庫県">兵庫県</option> 30<option value="奈良県">奈良県</option> 31<option value="和歌山県">和歌山県</option> 32<option value="鳥取県">鳥取県</option> 33<option value="島根県">島根県</option> 34<option value="岡山県">岡山県</option> 35<option value="広島県">広島県</option> 36<option value="山口県">山口県</option> 37<option value="徳島県">徳島県</option> 38<option value="香川県">香川県</option> 39<option value="愛媛県">愛媛県</option> 40<option value="高知県">高知県</option> 41<option value="福岡県">福岡県</option> 42<option value="佐賀県">佐賀県</option> 43<option value="長崎県">長崎県</option> 44<option value="熊本県">熊本県</option> 45<option value="大分県">大分県</option> 46<option value="宮崎県">宮崎県</option> 47<option value="鹿児島県">鹿児島県</option> 48<option value="沖縄県">沖縄県</option></select> 49 </div>
試したこと
日本語化させるためのgem enum_helpをまだ入れていないからと思っていましたが値の取得に関することなので
保存に関しては関係ないように思えます
補足情報(FW/ツールのバージョンなど)
rails 6.0.0
回答2件
あなたの回答
tips
プレビュー