rails 技術ブログ

rails 技術ブログ

勉強したことをアウトプットしていきます

2020-01-01から1年間の記事一覧

【rails】has_secure_password

has_secure_passwordとは railsに標準でついている機能で、パスワードをそのままデータベースに保存するのではなく、元に戻すことのできない値にハッシュ化して保存してくれます。 使いたいモデル内にhas_secure_passwordと記述するだけで簡単に使うことがで…

【rails】マイグレーションファイルを作成してNOT NULL制約を追加する

NOT NULL制約とは? データベースの値にNULL(railsでいうnil)を格納したくない時、NOT NULL制約をつけておくと、NULLを保存できないようにしてくれます。 使い方 ※既にデータベースが作成済みの場合のやり方です。 ①rails g migration <ファイル名>でマイグ…

【メモ用】railsメモ帳

その日学んだ事などをひたすらメモします。 時間が経って見返した時にも、「自分の言葉で説明できる」、「定着している」と思ったら消します。 CoC(Convention over Configuration) railsの4つの思想 rails db:migrateを複数回実行するとどうなる? (develop…

【rails】bundlerインストール後、実行できるようになるコマンド一覧

「そもそもbundlerとは?」という方はこちらをご覧ください。 【Ruby】gemとは? - rails 技術ブログ 下記のコマンドでbundlerをインストール $ gem install bundler bundlerインストール後、使えるようになるbundleコマンド一覧 コマンド 概要 bundle insta…

【Pundit】認証・認可とは

認証とは 相手が誰かを確認すること 例: ログインするにはメールアドレスとパスワードを入力する事で、誰であるかを確認し(認証)、ログインできる。 認可とは ある特定の条件に対して、リソースアクセスの権限を与えること 例: 記事の作成、更新→全員可能 …

rails dbコマンド一覧

コマンド 意味 $ rails db:create config/database.ymlの内容をもとにDBを作成する $ rails db:migrate db/migrateディレクトリにある全てのマイグレーションを実行する $ rails db:rollback マイグレーションのバージョンを1つ下げる $ rails db:rollback S…

プログラミング学習への取り組み方

はじめに 全くの未経験者である私がプログラミングスクールに入学して約2ヶ月経ち、その中で早くも意識が変わったことがありました。 この記事では、この2ヶ月で学んだ下記3点について、アウトプットしたいと思います。 ・プログラミング学習の進め方 ・エラ…

【Ruby】gemとは?

gemとは rubyのライブラリのこと。 便利な機能をまとめたもので、インストールして使うことで、作業効率をあげられる。 bundler gemを管理するためのルールで、bundler自体もgemの一種。 Gemfileを使ってgemの依存関係を管理してくれる。 gemを使うには? Ge…

rails routesコマンド

$ rails routesコマンドを実行すると何が確認できるか? 私の手元で実行してみた結果がこちらです↓ Prefix Verb URI Pattern Controller#Action letter_opener_web /letter_opener LetterOpenerWeb::Engine root GET / static_pages#top login GET /login(.:…

【Ruby】メソッドとは

メソッドとは? 関数とは「特定の処理をまとめた塊」のことでメソッドとも呼ばれています。 (↓下記の記事の内容を拝借しました) 【Ruby入門】 関数(メソッド)の使い方まとめ【型 引数 戻り値】 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入…

【Ruby】ゲッター/セッターとは

ゲッター 通常、インスタンス変数はクラス内でないと参照できない。 クラス外でも参照したい時に使うのがゲッターメソッド。 class Dog def initialize(name) @name = name end def getName #「ゲッター」メソッド @name end end dog = Dog.new('チワワ') #…

静的型付けと動的型付けの違い

静的型付け JavaやC,C++などの言語が静的型付け言語。 何の型が入るか宣言(intなど)が必要なため、コードの記述量が増えるといった点があるが、事前に型がわかっているので、実行速度が早くなる。 動的型付け Ruby、JavaScript、Pythonなどが動的型付け言語…

【Ruby】オブジェクト指向とは

rubyを勉強する上で欠かせない、「オブジェクト指向」について自分なりにまとめてみました。 オブジェクト指向とは オブジェクトとは、簡単にいうとモノのこと。 Rubyではほとんど全てのものがオブジェクトである(ifやelseなど、一部オブジェクトでないもの…

【Rails】リクエスト/レスポンス処理の流れ(MVC)

Webブラウザでページをクリックして、そのページが表示されるまでの流れをご説明します。 まず、大まかな全体像はこちら↓ 次に1つずつ、どのような処理がされているのかを細かく見ていきます。 具体的な例えがある方がわかりやすいので、「ブログアプリの記…

assign_attributesとは

assign_attributesとは Active Recordで用意されている、特定のattributeを変更するためのメソッド。 def update @article.assign_attributes(article_params) if @article.save flash[:notice] = '更新しました' redirect_to edit_admin_article_path(@arti…

三項演算子について

例① @article.state = @article.publishable? ? :published : :publish_wait ↑の書き方は三項演算子というもの。 条件 ? 結果1 : 結果2 これは以下のように書き換えられる。 if 条件 結果1 else 結果2 end つまり、例1は以下と同じ意味 (@article.state = @a…

【Ruby】コメントアウトする

# コメント def foo; end #行の途中からでもコメントアウトできます #をつけることでコメントアウトできます。 複数行のコメントアウトをしたい場合は =begin ここに コメントアウトしたい文章を 入力 =end =beginと=endの間にコメントを入力 既に入力してあ…

Kaminariを使ってページネーションする

ページネーションとは コメント一覧などを表示した時に、数が多くなると下の方までスクロールするのが大変になる。 そこで、ページを分割して表示するもの。 使い方 公式サイトはこちらです。 https://github.com/kaminari/kaminari ①Kaminariをインストール…

uniqueness: { scope: }を使ってユニーク制約を実装する

ブックマーク機能を実装したいと考えた時、「掲示板のユーザーは1つの掲示板に対して1ブックーマークしかできない」はずなので、そのためのバリデーションを設定します。 それを設定するのが以下のvalidates :user_id, uniqueness: { scope: :board_id }とい…

content_forを使ってページごとにページのタイトルを変更する

①application.html.erbに各ページのタイトルを受け取れるよう、yieldを記述します <title><%= full_title(yield(:title)) %></title> ②application.html.erbのfull_titleメソッドが使えるよう、ヘルパーで定義します module ApplicationHelper def full_title(page_title = …

errorメソッドを使ってエラーの詳細を表示させる

フラッシュメッセージを使い、「ユーザー登録ができませんでした」等なら上手くいかなかったことは伝えられるものの、どこがエラーで登録ができなかったのか、伝えられたらユーザーもわかりやすいですよね。 例:メールアドレスの蘭がブランク→メールアドレ…

デコレーターの使い方

Draperを使用した際の使い方を説明します。 (railsでデコレーター層を使いたい時はDraperか、Active_Decoratorを使うのが一般的です) ①gemをインストールする gem 'draper' ②bundle installする $ bundle install ③以下のコマンドを実行する $ rails generat…

フラッシュメッセージを表示させる

フラッシュメッセージとは カスタマーが会員登録やログインなどの処理を行った時に、それが正しく処理されたのかをわかりやすくするために表示させるメッセージのこと。 書き方 flash[:success] = '登録が完了しました' このように書くだけ。 具体的な使い方…

i18nによる日本語化対応の設定

①config/application.rbに以下の設定を追加 config.i18n.available_locales = %i[ja en] #アプリケーションが対応している言語の設定(ja=日本語、en=英語) config.i18n.default_locale = :ja #デフォルトの言語を日本語に設定 config.i18n.load_path += Dir[…

application.scssに特定のscssだけ読み込ませる方法

assets/stylesheetsの中にapplication.scssとは別にusers.scss等ファイルを追加した場合、appledation.scssで全て読み込むことができるよう、以下のように記述します。 *= require_tree . *= require_self *= require_tree .→app/assets/stylesheets以下の全…

rails genarateコマンドで不要なファイルを作成したくない時

rails generateコマンドを使うと必要なファイルを一度に生成してくれるため便利なものの、時には不必要なファイルも一緒に生成されてしまいます。 例えば$ rails generate controllerを実行すると以下のようにファイルが作られます。 $ rails g controller b…

form_withの使い方

form_withとは railsで情報を送信するためのヘルパーメソッド。 入力フォームを作成したい時に用いる。 form_withタグを使うとHTMLに変換された時に自動でauthenticity_tokenというセキュリティを高める隠しフィールドが生成されます。(GET以外のリクエスト…

strong parameters

strong parametersとは パラメータから受け取った値が安全かどうかを判断し、安全だと判断された場合のみデータを取得してくれる。 @user = User.new(params[:user]) 例えばこのようにしてユーザ情報を取得しようとすると、悪意を持った人物から管理者権限を…

flash.now

class SessionsController < ApplicationController def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) else flash[:danger] = 'Invalid email/password combination' …

rails consoleでデータベースの編集をする方法一覧

【新しいユーザを作成し、保存する】 > user = User.new > user.save > user = User.create #こっちはユーザの生成と保存を同時に行うため、user.saveは不要 【ユーザの名前を調べる】 > user.name 【ユーザを削除する】 > user.destroy 【ユーザ情報を複数…