Rails
知り合いが「Railsの長所ってなんやっけ?」って話をしてたので、その辺のRailsの長所・短所とか、RailsがDDDや大規模開発に向いてない理由を自分なりに整理してみた。 間違っている点などあれば是非ご指摘頂きたいです。 ※2023/07/21 追記: 本記事において…
マイグレーションファイルとは データベースの設計図。 マイグレーションファイルを実行すれば、マイグレーションファイルを元にDBが作成される。 →マイグレーションファイルを作成しただけではDBに反映されない。 マイグレーションファイルを作成 rails g m…
build, createなどの違い DBへ保存するか否かなど違いがある。 メソッド 戻り値 DB保存 DB保存(アソシエーション) ID build() モデルインスタンス x o nil build_stubbed() モデルインスタンス x x 適当な値 create() モデルインスタンス o o DB保存された値…
エラーハンドリングのメモが残ってたから、体系的な内容に纏めてみた。 どうせなのでコッチに移しておく。 エラーハンドリングをする 404エラー時は、404エラー用のテンプレートを表示させる。 500エラー時は例外(エラー)クラス、エラーメッセージ 、バック…
Rails6でのSemantic UIの導入 BootstrapのフレームワークであるSemantic UIをRails6で使ってみたので、以下に導入方法を記しておきます。 Semantic UI公式 以下の記事もよければ参考にしてください。 【Rails】Semantic UIを使って動的にフラッシュメッセー…
Rails6でjQueryを導入する方法 yarn add jquery package.jsonとyarn.lockを確認すると、jQueryが追加されていることが分かる。 (package.json) { "name": "zero_calorie", "private": true, "dependencies": { "@rails/actioncable": "^6.0.0", "@rails/acti…
be rails db:migrate:statusでmigrateの状況を確認。 upになっているファイルがmigrateされている。 $ be rails db:migrate:status database: zero_calorie_development Status Migration ID Migration Name ----------------------------------------------…
リクエストスペックの特徴 HTTP 動詞に対応するメソッド(get 、post 、delete 、 patch)を使う。 capybaraは使わない。 HTTPのレスポンスのステータスコードと実際のデータを含んだレスポンスボディを返す 200: OK - リクエストは成功し、レスポンスととも…
jsonのserializerとは? jsonを生成する仕組みのこと。 この生成したJSONのデータをレスポンスとして返す。 ActiveRecordは ActiveModel::Serialization を include している。 なので、そのまま以下のような記述もできる。 module Api module V1 class Arti…
transactionとは 複数のSQL文をtransactionという一つの単位にまとめることで、それぞれのSQLの処理が全て成功した場合にのみ、SQLの処理結果をDBに反映するよというもの。 典型的なのは銀行口座の例で、 ①A口座の残高から¥1,000引き落とす ②B口座の残高を¥1…
クラスの継承 あるクラスを継承して、新たにクラスを作成すること。 よくある例だと、Animalクラスとそれを継承するDogクラス、Catクラスみたいな。 クラスの継承を行うことで、継承元の親クラス(スーパークラス)に定義された機能を、子クラス(サブクラス)で…
ソフトウェア開発においては、RESTの概念が重要 RESTfulとは あらかじめ決められたリソースを定義し、それに沿ってアクションとhttpメソッドを関連づけるという考え方。統一された書き方でコードを記述できる。 URLを先に考えるのであって、ルーティングを先…
RSpecでテストを書く時に、よく使うけど忘れがちな文法とかをまとめていこうと思います。 ※随時書き足していきたい have_selector have_selector 'h1', text: '大事なお知らせ' expect(page).to have_selector 'a[data-method=delete]', text: 'delete' expe…