idと『.』ドット
最近記述式の中でよく分からなかったのがこういった記述のidについて
①
<% if user_signed_in? && current_user.id == tweet.user_id %>
②
<%= link_to '編集', edit_tweet_path(tweet.id), method: :get %>
最初はなんで左は user.id で右は user_id なのか、とかpathの後ろの tweet.id ってどういう時につけるのかが疑問だった。
しかし冷静に一つ一つ考えると解決できた。
①のcurrent_user.id == tweet.user_idに関してはまず
current_user は、現在ログインしているユーザーの情報を取得するメソッド
なので current_user.id は『現在ログインしているユーザーのid』ということ。
次に
tweet.user_id はtweetというテーブルの中の user_id というカラムのデータということ(つまり『tweetテーブルレコードのuser_id』)。
つまり、current_user.id == tweet.user_id は『現在ログインしているユーザーのid』が『tweetテーブルレコードのuser_id』と等しい ということになる。
ここで解ったのは『.』ドットが鍵だということ。
についてはターミナルの rails routes コマンドにて確認すると
Prefix verb URIパターン Controller#Action
tweets GET /tweets(.:format) tweets#index
POST /tweets(.:format) tweets#create
new_tweet GET /tweets/new(.:format) tweets#new
edit_tweet GET /tweets/:id/edit(.:format) tweets#edit
t¥weet GET /tweets/:id(.:format) tweets#show
このようになっている。
URIパターンの /tweets/:id/edit(.:format) を見るとこの edit_tweetパスは tweet の id が紐ついている。
つまり
edit_tweet_path(tweet.id) は『tweet の id』に紐ついた 『edit_tweet_path』ということになる。
つまり、rails routes コマンドのURIパターンを見ればわかるということだ。
また明日も頑張ろう。