モデルの項目に「地域(必須)」がありました。
今回それを5件に増加、1つだけ必須、残り4件は任意となりました。
そこでマイグレーションとモデルを以下のように修正しました。
ruby
1class CreateItems < ActiveRecord::Migration[5.2] 2 def change 3 create_table :items do |t| 4 t.references :prefecture1, foreign_key: { to_table: :prefectures }, null: false 5 t.references :prefecture2, foreign_key: { to_table: :prefectures }, null: true 6 t.references :prefecture3, foreign_key: { to_table: :prefectures }, null: true 7 t.references :prefecture4, foreign_key: { to_table: :prefectures }, null: true 8 t.references :prefecture5, foreign_key: { to_table: :prefectures }, null: true 9 t.boolean :paused, default: false, null: false 10 t.timestamps 11 end 12 end 13end 14
ruby
1class Item < ApplicationRecord 2 3 belongs_to :prefecture1, class_name: 'Prefecture', foreign_key: 'prefecture1_id' 4 belongs_to :prefecture2, class_name: 'Prefecture', foreign_key: 'prefecture2_id', optional: true 5 belongs_to :prefecture3, class_name: 'Prefecture', foreign_key: 'prefecture3_id', optional: true 6 belongs_to :prefecture4, class_name: 'Prefecture', foreign_key: 'prefecture4_id', optional: true 7 belongs_to :prefecture5, class_name: 'Prefecture', foreign_key: 'prefecture5_id', optional: true 8 9end 10
ビュー側では、とりあえず必須1つと任意の1つを試しに作って試してみました。
ruby
1 <%= f.label :prefecture1_id %> <%= label_tag(:prefecture1, "(必須)", class: 'required_field') %> 2 <%= f.collection_select :prefecture1_id, Prefecture.all, :id, :name, include_blank: "選択して下さい" %> 3 4 <%= f.label :prefecture2_id %> 5 <%= f.collection_select :prefecture2_id, Prefecture.all, :id, :name, include_blank: "選択して下さい" %> 6
必須である1だけ入力し登録を実行すると、任意分4つは意図した通りバリデーションをスルーしてくれましたが、入力したはずの値が入ってきておらず、「地域を入力してください」というバリデーションエラーになりました。
何が原因か分かる方教えていただけないでしょうか?
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。