アソシエーションを理解したい!!
プログラミング学習を初めて1ヶ月になります。
1ヶ月間、HTML/CSS,Rubyの基礎を勉強してきました。
今現在はRuby on Railsを勉強中です。
Ruby on Railsって覚えること多すぎて
理解が追いついていません。
アソシエーションの概念を十分理解していないまま
カリキュラムを読み進めると頭がおっぱぴーしてました。
ということでアソシエーションをより理解したいので
アソシエーションについての記事を書くことにしました。
アソシエーションとは?
Ruby on Railsにおける、複数のモデルの情報を
取得する際に使用する概念のことです。
一方のモデルからもう一方のモデルにアクセスできるようにします。
モデルに定義することで、そのモデルに紐付く別のモデルの情報へ
アクセスすることができます。
アソシエーション使用方法
twtterを例に例えてみましょう。
twitterにはユーザーを管理するモデル(User)とツィートを管理するモデル(Tweet)が存在します。
(テーブル数はもっとあると思いますが、まだ見習いなんで許してネ。)
(User)はTweetモデルに対して「1対多」、
Tweetモデルはモデル(User)に対して「1対1」の関係性になります。
これは例えばタカシというtwitterアカウント(Userモデル)は
複数ツィート(Tweetモデル)できますが、
ツィート(Tweetモデル)はタカシ(Userモデル)しか出来ないです。
「1対多」の関係性をUserモデルに
has_many :tweets
と記述します。
この場合は
User has many Tweetsの状態といえ、
「Userモデル(タカシ)は多くのTweetモデル(ツィート)を持っている」
ということになります。
「1対1」の関係性をTweetモデルに
belongs_to :user
と記述します。
この場合は
Tweet belongs to Userの状態といえ、
「Tweetモデル(ツィート)はUserモデル(タカシ)に属している」
ということになります。
これらの記述により、UserモデルとTweetモデルはテーブルの関連付けが
できます!!