前提・実現したいこと
rails のdeviseをカスタマイズして複数ユーザー(anglerユーザーとagentユーザー)を導入しています。
agentの新規登録の際にアクティブハッシュを導入して都道府県を選択させたいのですが、エラーが出てしまいます。
発生している問題・エラーメッセージ
NameError uninitialized constant #<Class:0x00007fcaae25a640>::ActiveHash Did you mean? ActiveStorage
該当のソースコード
deviseモデル agent.rb
ruby
1class Agent < ApplicationRecord 2 3 # Include default devise modules. Others available are: 4 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 5 devise :database_authenticatable, :registerable, 6 :recoverable, :rememberable, :validatable 7 extend ActiveHash::Associations::ActiveRecordExtensions 8 belongs_to_active_hash :prefecture 9 validates :prefecture_id, numericality: { other_than: 0 } 10end
アクティブハッシュモデル prefecture.rb
ruby
1class Prefecture < ActiveHash::Base 2 self.data = [ 3 {id: 0, name: '--'}, 4 {id: 1, name: '北海道'}, {id: 2, name: '青森県'}, {id: 3, name: '岩手県'}, 5 {id: 4, name: '宮城県'}, {id: 5, name: '秋田県'}, {id: 6, name: '山形県'}, 6 {id: 7, name: '福島県'}, {id: 8, name: '茨城県'}, {id: 9, name: '栃木県'}, 7 {id: 10, name: '群馬県'}, {id: 11, name: '埼玉県'}, {id: 12, name: '千葉県'}, 8 {id: 13, name: '東京都'}, {id: 14, name: '神奈川県'}, {id: 15, name: '新潟県'}, 9 {id: 16, name: '富山県'}, {id: 17, name: '石川県'}, {id: 18, name: '福井県'}, 10 {id: 19, name: '山梨県'}, {id: 20, name: '長野県'}, {id: 21, name: '岐阜県'}, 11 {id: 22, name: '静岡県'}, {id: 23, name: '愛知県'}, {id: 24, name: '三重県'}, 12 {id: 25, name: '滋賀県'}, {id: 26, name: '京都府'}, {id: 27, name: '大阪府'}, 13 {id: 28, name: '兵庫県'}, {id: 29, name: '奈良県'}, {id: 30, name: '和歌山県'}, 14 {id: 31, name: '鳥取県'}, {id: 32, name: '島根県'}, {id: 33, name: '岡山県'}, 15 {id: 34, name: '広島県'}, {id: 35, name: '山口県'}, {id: 36, name: '徳島県'}, 16 {id: 37, name: '香川県'}, {id: 38, name: '愛媛県'}, {id: 39, name: '高知県'}, 17 {id: 40, name: '福岡県'}, {id: 41, name: '佐賀県'}, {id: 42, name: '長崎県'}, 18 {id: 43, name: '熊本県'}, {id: 44, name: '大分県'}, {id: 45, name: '宮崎県'}, 19 {id: 46, name: '鹿児島県'}, {id: 47, name: '沖縄県'} 20 ] 21 22 include ActiveHash::Associations 23 has_many :agents 24 end
該当erbファイルの記述
html.erb
1<div class="form-group"> 2 <div class='form-text-wrap'> 3 <label class="form-text">都道府県</label> 4 <span class="indispensable">必須</span> 5 </div> 6 <%= f.collection_select(:prefecture_id, Prefecture.all, :id, :name, {}, {class:"prefecture-select"}) %> 7 </div>
試したこと
/app/controllers/users/registrations_controller.rb
GET /resource/sign_up
def new
super
@prefecture = Agent.where('prefecture_id IN(?)', params[:prefecture_id])
@agent << @prefecture.id
end
補足情報(FW/ツールのバージョンなど)
Ruby on rails 6.0.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。