tjinjin's blog

インフラ要素多めの個人メモ

Railstutorial学習記録11

SWも中盤に差し掛かってきたので、そろそろ終わらせたい。

やったこと

  • マイクロポストを投稿する機能の実装

メモ

  • belongs_to/has_many関連付けをすることで、関連性がわかるメソッドが利用できる。
  • letは遅延評価なので、即座に作成したいときはlet!(レットバン)を使う
  • to_aでActiveRecordのデータを配列の形にする。
  • ユーザが削除されたときに合わせてデータを消すにはmodelにdependentを指定する
  • sampleデータを全ユーザにだけでなく、特定のユーザにだけ作成する
users = User.all(limit: 6)
  50.times do
      content = Faker::Lorem.sentence(5)
      users.each { |user| user.microposts.create!(content: content) }
    end

とすると6人にだけタスクを実行できる。

  • パーシャルで呼び出し元のオブジェクトを参照したい。
<%= render 'shared/error_messages', object: f.object %>

のようにして、objectを渡す。

  • ユーザがサインインしたときに適切な関連付けをしないと、セキュリティ的に問題。
class MicropostsController < ApplicationController
  before_action :signed_in_user, only: [:create, :destroy]
  before_action :correct_user,   only: :destroy
  .
  .
  .
  def destroy
    @micropost.destroy
    redirect_to root_url
  end

  private

    def micropost_params
      params.require(:micropost).permit(:content)
    end

    def correct_user
      @micropost = current_user.microposts.find_by(id: params[:id])
      redirect_to root_url if @micropost.nil?
    end
end

として、自分のマイクロポストだけ取得するようにしないといけないみたいです。(まだ理解しきれてない気がする)

感想

Rails tutorial進めていく中でここは自分がやりたい領域じゃないなって思ってきました(わからなすぎて)。バックエンド側の仕組み考えたり、全体のアーキテクチャ考えたり、そういう仕組のためのツールを作ったり、インフラが自分には性にあっているとひしひしと感じました。フロントとかアプリ作っている人がどういったことをやっているかをなんとなく理解できただけでも成果は充分あったとは思ってます。あとは自分で検証用にアプリ作りたいってことが何度かあったので、それの土台づくりはできた点は満足。あと1章頑張ろう!