2021-09-01から1ヶ月間の記事一覧

ER図設計って何。

ポートフォリオ作成でER図作成に苦戦中。Readme作成→画面遷移図作成を経て、テーブル設計の段階に入った。データを効率よく取得できる設計を考えることがバックエンドエンジニアの役目の一つだという。データを効率よく取得するためのテーブル設計を行いたい…

ログイン機能、認証、認可、外部認証

現在絶賛ER図作成に苦戦しております。スバルです。エンティティの洗い出しをしている最中です。認証機能のあるAuthorizeテーブルを作るかどうか迷っています。 外部認証機能、いわゆるSNSログインに使う機能なのですが、初めてみる機能だったので、認証と認…

Railsルーティング②

Railsルーティング学習①の続き。 今回学べる内容は以下の通り。 _urlと_pathの違いは? pathとurlまとめ _path _url オブジェクトからパスを生成することもできる。 memberとcollection member collection 先述した7つのHTTPメソッドだが、そもそもurlと_pa…

Railsルーティングを学ぶ①

クラスに新しいメソッドを自分で定義するのではなく、7つのメソッドのみ定義した方がスパゲッティコードになりづらいそう。 まだまだルーティングに関して理解が浅いため、今回はルーティングの学習を行っていきたい。 そもそものRailsルーティングの目的 R…

rake task, cron,whenever ③(update action実装)

rake task, cron,whenever②(https://subaru-hello.hateblo.jp/entry/2021/09/11/205910)の続きです。 今回学習した内容 ・assign_attribute ・gem "pundit" ・Fat controllerの防ぎ方 article.rbの書き方 ・ Points Updateアクションで値を一旦確認。 articl…

empty?, blank?, present?の違い

日本語に直すと「空き」「空白」「存在」。 三つそれぞれの使い方を整理します。 empty? @articles.empty? ? 'true' : 'false' blank? @articles.blank? ? 'true' : 'false' present? def present? !blank? end empty?では配列や文字列の中身が存在している…

左外部結合?内部結合?

外部結合で複数のテーブルを結合してデータを取得させる方法が腑に落ちないため、今回はLEFT OUTER JOINさん特集の会にしております。 それでは、主役のLEFT OUTER JOINさんのプロフィールをご覧ください。 書き方 下記のように、モデル名と関連名をleft_joi…

Vueを学習してみる①

バックエンドとフロントエンドの境が曖昧になってきたのは、悪魔的javascriptが誕生してからだそうですね。javascriptのフレームワークであるVue,React,Angularのおかげでフロントエンドの魅力がより増えたとのこと。現在はNext.jsが最先端だと聞きます。以…

FizBuzz問題で学んだrubyのメソッド達

FizzBuzz問題の学習中にrubyの色々なメソッドに触れました。 問題回答に使った各メソッドの挙動を以下まとめたいと思います。 upto map reverse concat << join each_slice with_index chars 偶数奇数を選別する select odd? even? length size chomp split …

Action Mailer(現場Railsより抜粋)

「タスクが保存できたらユーザーにメールを送信する」そんなメソッド、作ってみたいですよね。Railsにデフォルトで搭載されているActionMailerを使えば、その願望叶えられます。 一緒に実装していきましょう。 実装手順 $ bin/rails g mailer TaskMailer app…

オブジェクト指向エクササイズ

オブジェクト指向エクササイズでオブジェクト指向を体に覚えさせる。今回は、実際に書いたコードを全ては載せず、概念をざっくり理解するための記事としたい。 オブジェクト指向エクササイズとは? 『ThoughtWorksアンソロジー』 ThoughtWorks Inc. (著) の…

Active Recordクエリーを理解する。

SQLをActiveRecordを使って表現するとどうなるのか。学習ログとして残していきたいと思う。 INNER JOIN 一つのテーブルから一つのデータを取得する場合 二つのテーブルからデータを取り出したいデータをクエリーする場合 LEFT OUTER JOIN COUNT DISTINCT GRO…

SQL文を読み解こう②(Pundit, Simple_form,FormObject,scope)

SQL文を読み解こう①の続きです。 SQL文を読み解こう①の続きです。 4. Punditて何 Punditとは なんで= f.input :tag_idsとすると、article_tagsとtag_idがjoinされるの? 5. FormObjectて何 FormObjectとは 6. ほんでscopeて何なんw by_tag(tag_id) scopeとは…

SQL文を読み解こう①(Pundit, Simple_form,FormObject,scope)

joinsでテーブルをくっつけた時に発行されたSQL文を読み解くための記事です。RailsのORMであるActiveRecordと実際に発行されるSQLを理解することで、今後ActiveRecordを扱うときのreading力を高めることができると考えやした。#やした 下記項目をざっくり学…

Form Object -モデルに紐づかないクラス-

Rubyはオブジェクト指向を採用している言語。ControllerやModelにメソッドを多く記述してFatにしてしまうことは、プロジェクトを進めていく上で、あまり推奨されていない。 だから、後任の方でもコードを見やすい形で残すのがベター。ということを踏まえて、…

irbとpryの違い

web DB 7月号に「irb と pryの違い」が載っていたので、知識の整理としてログを残しておく。 irbとは Railsの標準REPL。特定のgemを入れなくても、rails console(rails c)をターミナルで実行するだけで、dbのテスト環境に入ることができる。 $ rails c > U…

自己結合(N対N関連付け)って何。

名前が強そうだと思ったので、学習してみました。 自己結合とは? データモデルを設計していると、時に自分自身に関連付けられる必要のあるモデルに出会うことがあります。たとえば、1つのデータベースモデルに全従業員を格納しておきたいが、マネージャーと…

letとlet!の呼び出し方の違い

let と let! Use let to define a memolized helper method. The value will be cached across multiple calls in the same example but not across examples. letで定義したメソッドは、同じdescribeの中であれば何度でも呼び出すことが出きる。 Note that …

Active Storageって何。

Active Storageとは データベース上で使われる2つのテーブルのこと。 Active Storageを使うことで、モデルに画像データを紐づけることが可能になる。 今のところ、Amazon S3、Google Cloud Storage、Microsoft Azure Storage のクラウドストレージが標準で…

rake task, cron,whenever② (whenever とcron)

Wheneverの書き方 前回設定したarticle_stateコマンドを1時間に一度実行されるようにするには、wheneverを活用します。(wheneverはざっくりcronをrubyに翻訳するgemって理解してます。) db/schedule.rb require File.expand_path(File.dirname(__FILE__) + '…

「ねぇパパ、コントローラー名によって表示内容を分岐させる方法を教えて〜」

画面によってタイトルの表示方法を動的に変えたい場合ってどうすれば良いんだ? と思ったらどうやらこんな書き方があるらしい。 <% if controller.controller_name == "static_pages" && controller.action_name == "top" %> 意味: 「もしコントローラの名前…

rake task, cron,whenever ①(rake task作成)

rake task, cron,wheneverの使い方を学んでいく。 rake taskを作成するときに必要なメソッド rake task作成 $ rails g task hoge success create lib/tasks/hoge.rake 作成されたファイルを編集する上で知っておきたいrakeタスクの書き方↓ namespace :hoge d…

SessionとCookie

Sessionとは コンピュータシステムやネットワーク通信において、接続/ログインしてから、切断/ログオフするまでの、一連の操作や通信のこと (https://e-words.jp/w/セッション.html) 何故必要なのか HTTPはステートレスなプロトコルなため、「状態」を持てな…

Railsアプリにいい感じのグラフを導入する

こんにちは。スバルです。 今回は、Railsアプリにいい感じのグラフを導入する方法を勉強します。 診断系のアプリで、結果画面にグラフが表示されてることって結構ありますよね。 図を表示 あれ、僕もやってみたかったんです。この前作ったアプリに実装してみ…

scopeについて

scopeとは ActiveRecord::Relationを返すメソッドです。 関連オブジェクトやモデルへの呼び出しなどでよく使用されるクエリを指定することができます。 scopeの中にはwhereやjoins,includesなどのメソッドを使用することができるようです。 例えばコントロー…

form_withの使い方をまとめてみた

form_withってただフォームの作成に使うためのメソッドなんでしょ。という認識で終わっているので、今後の自分のためにも基本的なところをまとめてみました。 基本概念 <%= form_with model: @user, url: login_path, local: true do |f| %> ・form_withの後…

axios

ポーロフォリオでよく使われているイメージがあったので、現段階の知識の整理のためにブログを書きます。 サーバーサイドではnode.jsを使用し、フロントサイドではXHMLhttpRequestを使っているのがaxios Axiosとは Httpのやり取りにおける仲介役立ち位置。 a…

例外処理って何。

例外処理とは 処理中に何らかのエラーが生じた際の処理を指している。 railsにおいては、create!やsave!が有名ですね。 それぞれエラーが生じたときの流れは下記の通りになります。 create!、save! → レコードの作成・保存に失敗 → 例外を発生させる create…

ポリモーフィック関連付けって何。

ポリモーフィズムとは Polymorphism、意味は多様性。オブジェクティブ指向の3大要素の一つ。 一言でいうと、オブジェクトの実態を気にせず、メソッドを呼び出し、そのオブジェクトごとに振舞ってもらうことだそう。 例えばサイドスローの投手、アンダースロ…

RSpecテスト作成時に使う create_listについて

こんにちは。スバルです。 今回は、RSpecで使う便利メソッドcreate_listについて学習します。 複数のインスタンスを同時に使える便利メソッドで、下記のように同じファクトリから別のインスタンスを複数作りたい時に使います。 spec/factories/optime.rb Fac…