お世話になります。
railsにてAPIを作成中です。
データ保存時にエラーで動かない訳ではのですが、
HTTPメソッドPOST送信後のパラメーターの表示に違和感を覚えたのでご質問させていただきました。
下記3行めのparameterの内部で何故か重複するデータがハッシュとして送信されており、
かつその下にUnpermitted parameter
の記載が発生してしまいます。
可能であれば表示させないようにしたいのですが、ご協力いただけますと幸いです。
下記の他、必要な情報がございましたらお申し付けください。
何卒よろしくお願い申し上げます。
コンソールでの表示
Started POST "/api/ver1/ideas" for ::1 at 2021-06-17 02:02:12 +0900 Processing by Api::Ver1::IdeasController#create as */* Parameters: {"category_name"=>"BBB", "body"=>"本文1", "idea"=>{"body"=>"本文1"}} Unpermitted parameter: :idea (0.1ms) BEGIN ↳ app/models/idea_category.rb:12:in `block in save' Category Load (0.2ms) SELECT `categories`.* FROM `categories` WHERE `categories`.`name` = 'BBB' LIMIT 1 ↳ app/models/idea_category.rb:12:in `block in save' Category Load (0.2ms) SELECT `categories`.* FROM `categories` WHERE `categories`.`id` = 3 LIMIT 1 ↳ app/models/idea_category.rb:13:in `block in save' Idea Create (0.2ms) INSERT INTO `ideas` (`body`, `category_id`, `created_at`, `updated_at`) VALUES ('本文1', 3, '2021-06-16 17:02:12.202604', '2021-06-16 17:02:12.202604') ↳ app/models/idea_category.rb:13:in `block in save' (0.6ms) COMMIT ↳ app/models/idea_category.rb:11:in `save' Completed 200 OK in 25ms (Views: 0.2ms | ActiveRecord: 5.9ms | Allocations: 11389)
モデルファイル
ruby
1class IdeaCategory 2 include ActiveModel::Model 3 attr_accessor :category_name, :body 4 5 with_options presence: true do 6 validates :category_name 7 validates :body 8 end 9 10 def save 11 ActiveRecord::Base.transaction do 12 category = Category.find_or_create_by!(name: category_name) 13 idea = Idea.create(body: body, category_id: category.id) 14 idea.save! 15 end 16 end 17end
コントローラーファイル
ruby
1class IdeasController < ApplicationController 2 # POST 3 def create 4 @idea_category = IdeaCategory.new(idea_params) 5 if @idea_category.valid? 6 @idea_category.save 7 render json: { status: 201, data: @idea_category } 8 else 9 render json: { status: 422, data: @idea_category.errors.full_messages } 10 end 11 end 12 13 private 14 def idea_params 15 params.permit(:category_name, :body) 16 end 17 end
試したこと
コントローラーファイルのideea_paramsメソッド
にてpermitメソッド
内部に:idea
を追記。→Unpermitted parameter
は改善せず。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/17 08:53 編集
2021/06/19 07:01