読者です 読者をやめる 読者になる 読者になる

ユアマイスター株式会社エンジニアブログ

ユアマイスター株式会社のエンジニアが日々徒然。

Ruby on Rails でのアソシエーション

こんにちは!エンジニアインタンーンの土屋です!
phpを学んでいる上でアソシエーションが沢山出てきます。
これまでrubyruby on railsを勉強しながらやっていたのでphpを勉強するときは、railsでやったことと照らし合わせることが多いです。今日はrailsでのアソシエーションについて書いていきたいと思います。 今回は本の紹介サイトとしてコメント機能でやってみました。

多対多の関係(comment)

rails g scaffold comment user_id:integer book_id:integer body:text name:string

として、commentテーブルのカラムにbookのidとuserのidが入るようにgenerate。
忘れず

rake db:migrate

しましょう!

has_many belongs_to 

モデルに関連付けさせるための記述をしていきます。
まず、user.rb
f:id:yourmystar_engineer:20170415204836p:plain userはたくさんのbookとcommentを持っている。
同じようにcomment.rbとbook.rbにも。

f:id:yourmystar_engineer:20170415205213p:plain bookは一人のuserに属している。たくさんのcommentを持っている。
f:id:yourmystar_engineer:20170415205357p:plain commentは一人のuser一つのbookに属している。
この記述の仕方でアソシエーション(関連付け)することができました。

Controller

bookのshowページでcommentのフォームを出したいのでshowアクションにcommntのインスタンスを生成してあげます。f:id:yourmystar_engineer:20170415212033p:plain
次にcommentCntrollerではインスタンス化されたものを保存してあげる処理を書き、redirect_toで飛ばしたい先のpathを描いてあげます。

Viewで表示してみよう!!

booksのshowのViewです。このrenderの部分でパーシャルファイルのcommentを呼び出しファームを表示しています。 f:id:yourmystar_engineer:20170415212735p:plain
簡単なものですがブラウザで見ると。。。 f:id:yourmystar_engineer:20170415214244p:plain
こんな感じに!!

commentを入力して、createを押すと。。。。
f:id:yourmystar_engineer:20170415214553p:plain
f:id:yourmystar_engineer:20170415214559p:plain

コメント一覧が表示されました! 簡単なものですが考え方は似ていることが多いので、Phpで照らし合わせて学んだりしています!プログラミング始めたばかりの方などぜひ参考にしてください!
以上、土屋でした!