私は小さなRails 5アプリケーションにボードがあり、各ボードにはポスト(Redditのようなもの)があります。RailsのネストされたリソースIDは親とは関係ありません
ボードモデル:
class Board < ApplicationRecord
has_many :posts
end
Postモデル:
class Post < ApplicationRecord
belongs_to :board
validates :title, presence: true, length: { minimum: 1, maximum: 64}
mount_uploader :image, ImageUploader
end
私はボードのリソースの下のポスト資源を入れ子にしています。
routes.rbを:
Rails.application.routes.draw do
resources :boards, param: :name, path: '/' do
resources :posts, path: '/', except: [:index]
end
end
レール路線:
Prefix Verb URI Pattern Controller#Action
board_posts POST /:board_name(.:format) posts#create
new_board_post GET /:board_name/new(.:format) posts#new
edit_board_post GET /:board_name/:id/edit(.:format) posts#edit
board_post GET /:board_name/:id(.:format) posts#show
PATCH /:board_name/:id(.:format) posts#update
PUT /:board_name/:id(.:format) posts#update
DELETE /:board_name/:id(.:format) posts#destroy
boards GET / boards#index
POST / boards#create
new_board GET /new(.:format) boards#new
edit_board GET /:name/edit(.:format) boards#edit
board GET /:name(.:format) boards#show
PATCH /:name(.:format) boards#update
PUT /:name(.:format) boards#update
DELETE /:name(.:format) boards#destroy
私が持っている問題は、それが上の投稿の取締役会に対する、ポストIDが世界的に増加されるということではありません。例:
私は空のボードが2枚あるとします。「ニュース」ボードと「政治」ボードです。私はニュースボードの投稿を作成し、ルートを取得します: http://localhost:3000/news/1
。これは私が期待していることですポストIDは1でなければならないので、私の問題は、他のボードにポストを投稿すると、ポストはhttp://localhost:3000/politics/2
のようにID 2を取得するということです。私はそれがhttp://localhost:3000/politics/1
であることを望んでいます。なぜなら、それはそのボードに関連する最初の投稿です。
これをどのようにしてIDを親ボードに関連付けることができますか?