要約
-
belongs_to :nameとforeign_key :nameが同じだと、その逆のhas_manyをとるときにどうがんばってもうまく取れなかった - 同じにしない
- 外部キーには
_idつける
詳細
- 以下のコードだと
to_messages、from_messagesがとれない
class User < ApplicationRecord
has_many :to_messages, class_name: 'Message', foreign_key: 'to', dependent: :destroy
has_many :from_messages, class_name: 'Message', foreign_key: 'from', dependent: :destroy
end
class Message < ApplicationRecord
has_many :to, class_name: 'User', foreign_key: 'to'
has_many :from, class_name: 'User', foreign_key: 'from'
end
>Message.last.to
=>#<User id: 373...>
>User.last.to_messages
=>[]
- has_manyの名前を変えたらいけた
class Message < ApplicationRecord
has_many :to_user, class_name: 'User', foreign_key: 'to'
has_many :from_user, class_name: 'User', foreign_key: 'from'
end
- そもそも
foreign_keyは_idがいいね - 自分では慣例的にやらないけどレビューであがってくることはあるので覚えておく