最初に、ライク機能の為のブランチを作成しておきましょう。以下コマンドを実行して下さい。
# ターミナル
$ git checkout -b create-like
では、ライクの実装を行っていきます。まず、以下のクラス図を見て下さい。ライクモデルは、ユーザー・オピニオンモデルと関連付いているモデルです。関係性としては、ライクが子モデルになります。
では、このクラス図からScaffoldでライクを作成しましょう。以下コマンドを実行して下さい。
# ターミナル
$ rails g scaffold Like opinion:references user:references
$ rails db:migrate
ユーザー・オピニオン・ライクの関連付けを行います。以下のように関連付けの記述を各モデルに追加して下さい。(ライクには自動で追加されています。)
dependent: :destroyというのは、親モデルレコードが削除された場合に、それに紐づく子モデルレコードも削除するという設定を意味します。以下の場合だと、ユーザーやオピニオンが削除されると、それに紐づくライクも削除されます。
# user.rb
has_many :likes, dependent: :destroy
# opinion.rb
has_many :likes, dependent: :destroy
# like.rb
belongs_to :opinion
belongs_to :user
コンソールを立ち上げて、ライクを作成してみましょう。以下を参考に作成してみて下さい。まずはユーザーとオピニオンを用意します。
$ rails c
> user = User.first
> opinion = Opinion.first
次にライクを作成します。するとオピニオンに付いているライクが表示されます。
> opinion.likes.create(user: user)
> opinion.likes #=> オピニオンのライクが作成されている
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。