У меня есть модель Player
, кто has_many :positions
. Подумайте, как игрок играет в спорт, где они могут играть на разных позициях на поле (т. Е. Вперёд, левое крыло, защитная полузащита).Как структурировать отношения между моей моделью позиции и моей моделью Игрока?
Я не могу понять, как смоделировать это, с точки зрения БД.
Изначально мой Position.rb
выглядел следующим образом:
# == Schema Information
#
# Table name: positions
#
# id :integer not null, primary key
# position_type :integer
# player_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Position < ActiveRecord::Base
belongs_to :player
enum position_type: { goalkeeper: 0, center_back: 1, left_back: 2, right_back: 3, left_wing_back: 4, right_wing_back: 5, defending_midfielder: 6, central_midfielder: 7, attacking_midfielder: 8, left_midfield: 9, right_midfield: 10, left_wing: 11, right_wing: 12, center_forward: 13 }
end
Но что чувствует себя неправильно.
Должен ли я делать что-то вроде обычной модели Position
, а затем создавать уникальные записи для каждой из позиций, а затем иметь отношения HABTM между ними?
Это единственная ситуация, когда HABTM подходит? Некоторое время я не использовал такие отношения.