ライクの基本実装

最初に、ライク機能の為のブランチを作成しておきましょう。以下コマンドを実行して下さい。

# ターミナル

$ 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 [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る

×