Open2

Railsに関する知見・捉え方

なかじなかじ

DHHはどのようにRailsのコントローラを書くのか | POSTD

内容

  • コントローラはデフォルトのCRUDアクションのみ(index,new,create,show,edit,update,destroy)を使うべきという考え方
  • 複雑であってもresourcesのネストを使って表現できないか考えてみましょう

自分のアプリで考えると...

  • 通常のindexアクションと自分の投稿を取得するためのmypageアクションをPostコントローラの中に定義している
app/controllers/posts_controller.rb
#...
class PostsController < ApplicationController
  def index
 @posts = Post.includes(:user).order(created_at: :desc
  end
#...
  def myposts
    @posts = Post.includes(:user).where(user_id: current_user.id).order(created_at: :desc)
  end
#...
end
  • これをPostsControllerの下にマイページ用のコントローラを作る
app/controllers/posts/mypages_controller.rb
class Posts::MypagesController < ApplicationController
  def index
    @posts = Post.includes(:user).where(user_id: current_user.id).order(created_at: :desc)
  end
end

紹介元

  • 「コードレビューで学ぶRuby on Rails 第二版」3.1(記事自体は古いが書籍は2024年のもの)

関連している記事

https://tech.kitchhike.com/entry/2017/03/07/190739

なかじなかじ

Railsでlib/配下に置くもの

概要

libディレクトリについて

lib/ アプリケーションで使う拡張モジュールが置かれます。

引用元:Rails をはじめよう - Railsガイド

複数のアプリケーション間で共有するライブラリ用のディレクトリ。
アプリケーションに関するファイルはapp以下に置くので、それ以外の汎用的な処理があれば置いておくらしい。

引用元:Ruby on Railsのディレクトリ構成とファイルの役割 | チュートリアル学びまとめ #Rails - Qiita

lib/ 複数のアプリケーション間で共有するライブラリ用のディレクトリ

引用元:Railsの基礎知識 | Railsドキュメント

  • アプリ独自の機能ではなく、他のアプリでも共通で使える機能を置いておく場所というイメージっぽい

libディレクトリの使い方

共通の処理をかける系(今回は関係ないが思い出したので思い出したので)

  • コントローラ:app/controllers/concerns
  • モデル:app/controllers/concerns