(Rails) @book.user_idと@book.userの違い

model

book user
id id
book name
user_id

注意::userとbookには1:Nの関係がある。

状況

この時、bookからuserを指定する時に2通りの書き方ができるように思える。

@book.user_idと@book.userである。(@bookにはidが1つの入る)

しかし、これらは異なるものである↓↓

@book.user_id・・・user_id

@book.user・・・Userのレコード

詳細

@book.user_id #@bookでレコードを指定し、そのレコードのカラムであるuser_idを指定する。
@book.user #@bookでレコードを指定し、そのuser_id=user.idのuserのレコードをしてする。

@book.user_id @bookでレコードを指定(水色)し、.user_idでuser_idを指定(赤色)する。 @book.user @bookでレコードを指定(水色)し、.userでuser_idと同じuserの中のidを指定(赤色)する。そしてそのレコードを指定(黄色)する

図による違いの説明 上が@book.user_idで下が@book.userである

おまけ

modelに関数を書いた際は、@book.userの方でUserのレコードを指定しないと使えないことに注意。

まとめ

@book.user_id・・・user_id

@book.user・・・Userのレコード

def display_name(user_id)
  user_id.name
end