覚書: Rails: 名前空間付きのスキャフォールド

bin/rails g scaffold 'admin/post' title body:text
bin/rails db:migrate

名前空間がテーブル名の接頭辞になる。
物理的(ディレクトリ)、論理的に名前空間が追加される。

モデル

invoke  active_record
create    db/migrate/YYYYmmddHHMMSS_create_admin_posts.rb
create    app/models/admin/post.rb
create    app/models/admin.rb
# app/models/admin/post.rb
class Admin::Post < ApplicationRecord
end

# app/models/admin.rb
module Admin
  def self.table_name_prefix
    "admin_"
  end
end

# db/schema.rb
create_table "admin_posts", force: :cascade do |t|
# ...

ルーティング

invoke  resource_route
 route    namespace :admin do
            resources :posts
          end
bin/rails routes -c posts
         Prefix Verb   URI Pattern                     Controller#Action
    admin_posts GET    /admin/posts(.:format)          admin/posts#index
                POST   /admin/posts(.:format)          admin/posts#create
 new_admin_post GET    /admin/posts/new(.:format)      admin/posts#new
edit_admin_post GET    /admin/posts/:id/edit(.:format) admin/posts#edit
     admin_post GET    /admin/posts/:id(.:format)      admin/posts#show
                PATCH  /admin/posts/:id(.:format)      admin/posts#update
                PUT    /admin/posts/:id(.:format)      admin/posts#update
                DELETE /admin/posts/:id(.:format)      admin/posts#destroy

コントローラー

invoke  scaffold_controller
create    app/controllers/admin/posts_controller.rb
# app/controllers/admin/posts_controller.rb
class Admin::PostsController < ApplicationController

ビュー

invoke    erb
create      app/views/admin/posts
create      app/views/admin/posts/index.html.erb
create      app/views/admin/posts/edit.html.erb
create      app/views/admin/posts/show.html.erb
create      app/views/admin/posts/new.html.erb
create      app/views/admin/posts/_form.html.erb
create      app/views/admin/posts/_post.html.erb
app/views/admin/posts/index.html.erb
<div id="admin_posts">
  <% @admin_posts.each do |admin_post| %>
    <%= render admin_post %>
   
app/views/admin/posts/_post.html.erb
<div id="<%= dom_id post %>">
  <p>
    <strong>Title:</strong>

以上です。

付録

覚書: Rails: 名前空間付きのスキャフォールド: 名前空間と同名のモデル
この覚書の補足です。

この記事が気に入ったらサポートをしてみませんか?