うさぎのイラスト

ネットアンサー55備忘録

web技術を書いていきます

ルーティングについて

-2023年01月27日-
resources :photos
routes.rbファイルにて「resources :photos」は下記を表します。 ルートパスの確認方法は2種類ございます。
①:ターミナルにてrails routesを実行
②:サーバーを起動し、URL末尾に/rails/info/routesを追記

パスとURL用ヘルパー

resources :photos
を例にとると、下記のようなURL用ヘルパーが作成されます。
photos_path
# /photos

new_photo_path
# /photos/new

edit_photo_path(:id)
# /photos/:id/edit
#(edit_photo_path(10)であれば/photos/10/editを返します)

photo_path(:id)
# /photos/:id
#(photo_path(10)であれば/photos/10を返します)
※Prefixがurlヘルパーを表してます、questionをphotoに置き換えて考えてください。 また_urlヘルパー(photos_urlなど)もあります。
_urlヘルパーは、同じパスの前に「現在のホスト名」「ポート番号」「パスのプレフィックス」を追加して返します。

1と多結合の場合

ここで「質問文」と「回答文」という関係を考えてみましょう。
1つの「質問文」から「回答文」をたくさん投稿することが出来ます、ですので『has_many』の関係となります。
一方で、「回答文」は1つの「質問文」だけに紐づきます、『be_longs_to』の関係となります。


※questionモデルが先に作られている前提です。
# コマンドプロンプト
rails g model Answer name:string content:text question:references
# model/answer.rb
class Answer < ApplicationRecord
  belongs_to :question
end
# model/answer.rb
class Answer < ApplicationRecord
  belongs_to :question
end
# model/question.rb
class Question < ApplicationRecord
    has_many :answers
end
# model/routes.rb
Rails.application.routes.draw do

  resources :questions do
    resources :answers
  end
end
上記の設定で子要素のルーティングが作られます。