has_manyとhas_many throughでの取得できるデータの違い

class User < ApplicationRecord has_many :posts end @user.posts => @userのidとpostテーブルのuser_idに一致するpostsを取得。 つまり、@userが作成したpost全てを取得 class User < ApplicationRecord has_many :posts, through: :likes end @user.posts…

1対多のアソシエーション

アソシエーションとは 2つのActive Recordモデル同士のつながりのこと。 モデルとモデルの間に関連付けを行う事で コードでの共通操作をよりシンプルで簡単描けるようになる。 関連付けの仕方(1対多) モデル作成時に関連付けしたい他のモデルとの関連付け…

N+1問題

N+1問題の基本 関連付けされている前提。 こーゆーのがあったら、 毎回each文回す度にpostテーブルを参照してしまう。 @users = User.all @users.each do |user| puts user.post.content end ので、includesメソッドを使ってこう書き換える。 (includesメソ…

ストロングパラメータにmergeする

例)ユーザー(user)と掲示板(board)とコメント(post) class PostsController < ApplicationController def create post = current_user.posts.new(post_params) post.board_id = params[:board_id] if post.save redirect_to board_path(post.board) else re…

form_withのlocalオプション

form_withではデフォルトでremote :trueになっている。 これを解除するのがlocalオプション。 デフォルトのままでは、 フォームは非同期通信としてJS方式で送られてしまう。 この場合、例えばビューからコントローラにフォームの内容を送って そこから別アク…

アクセサメソッドの基本

b>アクセサメソッドとは、 インスタンス変数(@nameとか)の読み書きをするためのメソッド。 "attr_accessor"とか"attr_writer"とか"attr_reader"がアクセサメソッド (attr_writerはセッターメソッド、attr_readerはゲッターメソッドともいう。) 設定の仕方は …

プログラミングのアウトプットブログです。

プログラミングの アウトプットとしてブログを書いていこうと思います。 趣旨としては ・勉強した内容を整理したい。 ・書くことで理解を深めたい。 ・復習をしやすいようにしたい。 今まではいつでも見れるようにiphoneのメモアプリ(デフォルトで入ってるや…