日曜ITエンジニア劇場

日曜に勉強した情報の整理と、挑戦する新たな技術(私にとって)のつまづきポイントを綴っていきます。

ActiveAdmin/レシピ管理/開発


参考資料

1.公式サイト

activeadmin.info

2.作業手順参考

qiita.com
今回もありがとうございます!

3.ER図作成ツール(ブラウザで使用できる)

◆使用説明

www.kaasan.info

  ↑ ITかあさん、ありがとうございます!めっちゃ、便利です😊

◆ツール

ondras.zarovi.cz


目的

ActiveAdmin/レシピ管理/概要のER図を元に、
アプリをActiveAdminの機能だけで作る。


ER図

f:id:kuroneko-r011117:20200529121954p:plain

手順

1.modelを生成する。

# レシピ詳細model  
$ rails g model recipe_detail name:string deleted_at:datetime  
# 食材model  
$ rails g model ingredient name:string deleted_at:datetime  
# 調味料model  
$ rails g model seasoning name:string deleted_at:datetime  
# 単位model  
$ rails g model ingredient name:string deleted_at:datetime  

2.マイグレーションファイルをDBに反映

$ rails db:migrate    

3.アソシエーションの設定と外部キーの定義

レシピ詳細

app/models/recipe_detail.rb

class RecipeDetail < ApplicationRecord  
  belongs_to :recipe  
  belongs_to :ingredient  
  belongs_to :seasoning  
  belongs_to :unit  
    
  # ↓論理削除↓  
  acts_as_paranoid  
end  

<<未来の私に伝言>>
レシピ詳細は論理削除不要かも。必要なかったら、後日削除する。

食材

app/models/ingredient.rb

class Ingredient < ApplicationRecord  
  belongs_to :recipe_detail  
  
  # ↓論理削除↓  
  acts_as_paranoid  
end  

調味料

app/models/seasoning.rb

class Seasoning < ApplicationRecord  
  belongs_to :recipe_detail  
  
  # ↓論理削除↓  
  acts_as_paranoid  
end  

単位

app/models/unit.rb

class Unit < ApplicationRecord  
  belongs_to :recipe_detail  
    
  # ↓論理削除↓  
  acts_as_paranoid  
end  

レシピ(前回作ったものも忘れずに)

app/models/recipe.rb

class Recipe < ApplicationRecord
  has_many :recipe_details
  
  # ↓論理削除↓  
  acts_as_paranoid
end

4.前述までのmodelに対応する画面を作成する。

$ rails g active_admin:resource RecipeDetail  
$ rails g active_admin:resource Ingredient  
$ rails g active_admin:resource Seasoning  
$ rails g active_admin:resource Unit  

5.ActiveAdmin.registerpermit_paramsを記述する。

※生成したActiveAdmin.registerにはコメントとしてpermit_params
使用説明+全カラムに対応する記述があるので、不要な部分を削除するだけで良い。

レシピ詳細

app/admin/recipe_details.rb

ActiveAdmin.register RecipeDetail do  
  permit_params :quantity, :deleted_at, :recipe_id, :ingredient_id, :seasoning_id, :unit_id  
end  

食材

app/admin/ingredients.rb

ActiveAdmin.register Ingredient do  
  permit_params :name, :deleted_at    
end  

調味料

app/admin/seasonings.rb

ActiveAdmin.register Seasoning do  
  permit_params :name, :deleted_at  
end  

単位

app/admin/units.rb

ActiveAdmin.register Unit do  
  permit_params :name, :deleted_at  
end  

5.サーバー起動

$ rails s    

6.ブラウザでhttp://localhost:3000/adminにアクセスして、ログインする。

おまけ

完成図

とりあえず、レシピ詳細画面だけ掲載します。
他は前回のrecipesと似た様なものなので。

f:id:kuroneko-r011117:20200529134556p:plain
レシピ詳細_一覧画面

f:id:kuroneko-r011117:20200529134601p:plain
レシピ詳細_登録画面

f:id:kuroneko-r011117:20200529134605p:plain
レシピ詳細登録画面ドロップボックスをクリックした状態

 ↑
外部参照したところ(材料や調味料)は、自力でドロップボックス設置するのかと思いきや、
下図の通り、ActiveAdminが設置してくれている。
素晴らしい〜😂