「RESTful」「CRUD」

Railsでサービスを作る際に、基本となる概念であるRESTfulが自分の中で曖昧だったのでまとめておこうと思う。

・ルーティング

受け取ったURLリクエストを認識し、適切なコントローラのアクションい割り当てる役割を担う。

・REST((REpresentational State Transfer) webサービスの設計原則の事。

①ステートレス(Stateless) →システムの状態やセッションに依存しない。

②統一インターフェース(Uniform Interface) →処理結果、リソースへの操作においてHTTPメソッドで統一されている。

③アドレス可能性(Addressability) →全ての情報はURIで表現される一意なアドレスを持っている。

④接続性(Connectability) →状態やセッションに依存しない。どのOSでも同じURLからは同じ結果が返ってくる。

CRUD(Create/Read/Update/Delete)

resources :tasks

をルーティングで定義すると、railsでは自動で7つのルートを定義してくれる。

*リソース→CRUDの対象となる情報(コンテンツ) 🐤

Scopeについて

技術ブログなんて大層なものでは無いけど、Qiitaとかに投稿する程でも無い事をアウトプットがてら、ここにメモっていこうと思う。

(基本構文)

scope :scope名, -> { sql文 }  

RailsでScopeを使う際のポイント

Controller内でクエリが増えすぎたり、メソッドチェーンを繋ぎすぎて見えずらくなった場合は、scopeにまとめた方が良いらしい。

class ProductsController < ApplicationController
  def index
  @products = Product.joins(:place).where(main_area:"US",mini_area:"DC")
  end
end
class Product < ApplicationRecord
  scope :includes_city,-> {joins(:place)}
  scope :search_with_id, ->(area_id) { where(id: area_id)}
end

引数も取れるしメソッドチェーンも使える。

Product.includes_city.search_with_id(2)

 あとはもちろん、クラスメソッド定義でも可能。🐤