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』と等しい ということになる。

 

ここで解ったのは『.』ドットが鍵だということ。

 

 

②のedit_tweet_path(tweet.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.idtweet の id』に紐ついた 『edit_tweet_pathということになる。

 

つまり、rails routes コマンドのURIパターンを見ればわかるということだ。

 

また明日も頑張ろう。