覚書: 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: 名前空間付きのスキャフォールド: 名前空間と同名のモデル
この覚書の補足です。
この記事が気に入ったらサポートをしてみませんか?