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

attr_accessorと仮想的な属性

attr_accessor セッターメソッド(属性を与える)とゲッターメソッド(属性値を読み取る)を同時につくる。 インスタンス変数にDBには保存しない仮想的な属性を与える時に有効。 class User < ApplicationController attr_accessor :remember_token ...

renderとredirect_to

render ビューを出力(レンダリング)する。リクエストは行われない。 描画するためのテンプレートを探す(規約:views/コントローラ名/アクション名.html.erb) 見つかったテンプレートをもとに、データを展開し最終的なHTMLを生成しレンダリングする。 cla…

protectedとprivate

protected:定義されているクラスのインスタンスであれば呼び出せる private:そのオブジェクト(selfを使う文脈)からしか呼び出せない どちらも:定義されているクラスとサブクラスのインスタンスメソッド内でのみ呼び出せる。 class Piyo def internal pr…

ストロングパラメータ

マスアサインメント機能:複数のパラメータをまとめて登録・更新できる機能。 user = User.new(params[:user]) # 複数のパラメータの集合 user.save マスアサインメント脆弱性:上の例で、params[:user]が改変されていた場合(adminなどのパラメータの追加な…

form_with

<%= form_with url: posts_path do |f| %> <%= f.text_field :title %> <% end %> postsコントローラにparams[:title]を送る <%= form_with scope: :post, url: posts_path do |f| %> <%= f.text_field :title %> <% end %> postsコントローラにparams[:post…

ActiveRecord

RailsのMVCでいうモデルに相当するもの。 CRUD、コールバック、バリデーション、マイグレーションに関するメソッドを提供する。 また、様々なデータベースとの互換性があり、データベースの種類に関わらず同じ表記ができる。 ORMフレームワークとしてのActiv…

アセットパイプライン

アセットパイプライン:JavaScriptやCSSやそれらの拡張言語で書かれたアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワーク。分割されたアセットファイルを一つにまとめて配信することで、開発効率と読み込み…

Sass

Sass:CSSの拡張言語 ネスト スタイルシート内に共通のパターンがある場合は、要素をネストさせることができる。 .title { text-align: center; h1 { margin-bottom: 10px; } } h1は.titleのルールを継承している 変数 値に変数名を与えることができる。 $la…

Bootstrap

Bootstrap CSSひな形フレームワーク。 使用手順 1.bootstrap-sassのインストール gem 'bootstrap-sass' % bundle install 2.asset/scssにcustom.scssを作成 @import 'bootstrap-sprockets'; @import 'bootstrap' 一番上に記入

Rails風味のRuby

Rubyは オブジェクトとメッセージの受け渡しで全てを表現できる。オブジェクトを中心に物事をおこす(オブジェクト指向) オブジェクトにはメッセージを投げかけると何かしら返ってくる。文字数は?とか空ですか?とか trueという答えですらオブジェクトであ…

Bundlerの使い方

Bundler:Gemの依存関係を管理するライブラリ。 Gemの依存関係を管理するとは? 一つのGemを使えるようにするために、そのGemが依存しているGemも一括でインストールする。バージョンも合わせる。 bundleコマンド % bundle exec ____ Gemfile内で指定されて…

Gemfileの書き方

Gemfile:必要なGemを記述する。 Gemfile.lock:bundlerによって固定されたGemの具体的なバージョンを記録する。バージョン管理に使う。 Gemfileの書き方 gem 'rails', '____' 1.0.0 # バージョンを固定 >= 1.0.0 # これ以上のバージョンが必要 >= 1.0.0, < …