(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