エキスパート卒業!
どうもアマツチです。
途中から書けなくなってごめんなさい。最終課題にのめり込んだことや体調不良等が重なり手が出せずにいました。
では気を取り直しての報告です。この度8月から取り組んでいたスクールですが、10月末を持って最終課題の発表、及び卒業させていただきました。
あっという間の10週間でした。同期の協力もありモチベーションはかなり高めで取り組めたように思います。本当に感謝です。
最終課題ではPairsのクローンサイトを作りました。理由としては、そういったマッチングアプリのヘビーユーザーだった同期がいて、ユーザーとして知っている動作を読み取りやすいのではないか思い、候補に上がった時に推しました。
後で聞いた話によると、Pairsは高難易度に位置づいてて、マッチングしてやりとりできるまでに至った生徒は数える程しかいないとのことでした。実際そこはモデルだけでも相当難しいところでした。
例えばこちらのコード。
--
# フォロー
has_many :active_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "following_id",
dependent: :destroy
has_many :followings, through: :active_relationships, source: :following
has_many :followerds, through: :passive_relationships, source: :followed
# ユーザーをフォローする
def follow(other_user)
active_relationships.create(following_id: other_user.id)
end
# 現在のユーザーがフォローしてたらtrueを返す
def following?(other_user)
followings.include?(other_user)
end
--
このコードはマッチング、つまりフォローとフォロワーの関係を表現するためのコードとなっています。誰がフォローして、誰がフォローされたか、それがユーザーテーブル間のみで起こっているので仮想のユーザーテーブルと多対多の関係を示す必要があるということです。
これはrails チュートリアル11章の記述を参考にしていますが、まあはっきりいって初見で理解しろというのは難しい話です。試作して動きは理解するだけでも1週間はかかりましたし。
それでもチャットでやりとりできなければそれはマッチングサイトではないので、絶対そこまでは実装するという取り組みでやってきました。
その最終課題のアプリがこちらになります。
課金要素等は今回は実装していないので気軽に遊んでみてください
。
次回は最終課題の説明をしようかなと思います。
ではまた。