前提・実現したいこと
1対多関係にあるテーブルのデータを登録できるapiをRailsのapiモードで作りたいです。
具体的には
Categoryテーブルとideaテーブルを用いて
Categoryのnameカラムとideaのbody(内容)を登録。
Categoryのnameがすでに存在している場合は同じcategory_idを登録
未登録の場合は新しくcategory_idを登録
といった仕様です。
発生している問題・エラーメッセージ
現状postmanを使用してリクエストを送っています。
現状、この方法だとテーブル毎にリクエストを送らないとデータを作成できません。
apiでデータを登録する際に
category_name(カテゴリー名)のような形で入力し、categoryを登録したいです。
該当のソースコード
category.rb
ruby
1class Category < ApplicationRecord 2 has_many :ideas, dependent: :destroy 3 validates :name, uniqueness: true, presence: true 4end
idea.rb
ruby
1class Idea < ApplicationRecord 2 belongs_to :category 3 validates :body, presence: true 4end
categories_controller.rb
ruby
1class CategoriesController < ApplicationController 2 3 def create 4 @category = Category.new(category_params) 5 if @category.save 6 render json: { status: 201, data: @category } 7 else 8 render json: { status: 422, data: @category } 9 end 10 end 11 12 private 13 14 def category_params 15 params.permit(:name) 16 end 17end
ideas_controller.rb
ruby
1class IdeasController < ApplicationController 2 3 def create 4 @idea = Idea.new(idea_params) 5 if @idea.save 6 render json: { status: 201, data: @idea } 7 else 8 render json: { status: 422, data: @idea } 9 end 10 end 11 12 private 13 14 def idea_params 15 params.permit(:body, :category_id) 16 end 17end
routes.rb
ruby
1Rails.application.routes.draw do 2 resources :categories, only: [:create] do 3 resources :ideas, only: [:create] 4 end 5end
apiモードを使用したのは初めてで、右も左もわからない状態です。
改めて質問を整理させて頂きますと、
・データを作成するとき親子関係にあるテーブルのデータ作成方法
・postmanを使用した時↑ようなリクエストはどのように送るのか
※例えば
http://localhost:3000/categories/1/ideas
のようにリクエストを送る時点でcategoryのidが指定されてしまうため、リクエストする時点でidを検索、追加できるようにしたい。
以上です。
よろしければご回答お願い致します。
あなたの回答
tips
プレビュー