要約
-
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
がいいね - 自分では慣例的にやらないけどレビューであがってくることはあるので覚えておく