【168日目】【1日20分のRailsチュートリアル】【第12章】UserモデルとRelationshipモデルの関連付け
今日は「12.1.2 User/Relationshipの関連付け」から。
12.1.2 User/Relationshipの関連付け
フォローしているユーザーとフォロワーを実装する前に、UserとRelationshipの関連付けを行います。
1人のユーザーにはhas_many (1対多) のリレーションシップがあり、このリレーションシップは2人のユーザーの間の関係なので、フォローしているユーザーとフォロワーの両方に属します (belongs_to)。
うーん、よく分からない…。active_relationships
のactive
ってどこから来たんや…。relationships
じゃ駄目なの…??
Micropostと似たような実装にはなるけど、そのままそっくりでは駄目で、クラス名を明示してあげる必要があるのは分かった。
先ほどの説明をコードにまとめると、UserとRelationshipの関連付けはリスト12.2とリスト12.3のようになります。
ふむふむ、Relationshipモデル内にはユーザーIDと関連付ける属性が2つあるので、それぞれ別の名前付けないとね、ってことか。
で、設計時点でfollower
とfollowed
を用意しているのでそれぞれどっちもUserモデルと関連してるよ、って明示しないといけないのかー。
app/models/user.rb
: has_many :active_relationships, class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy :
app/models/relationship.rb
class Relationship < ActiveRecord::Base belongs_to :follower, class_name: "User" belongs_to :followed, class_name: "User" end
(ユーザーを削除したら、ユーザーのリレーションシップも同時に削除される必要があります。そのため、関連付けにdependent: :destroyも追加しています。)
なるほど。便利だなぁ。
今日の学習時間は【23分】。
次は「12.1.3 Relationshipのバリデーション」から。