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章頑張ろう!