Я пытаюсь собрать пару ассоциаций моделей для небольшого проекта, над которым я работаю. Я новичок в Rails, так что меня это немного смущает.
Мой пример использования довольно прост. У меня есть Спортивная Лига , в которой много Дивизий . Каждый Дивизион имеет множество Команд . Каждая команда имеет по одному капитан и имеет много игроков .
Теперь и игроки, и капитаны представлены пользователем класса. Единственное, что их отличает, это их роль. Я использую CanCan для управления ролями.
Теперь вот мои Модели и как я определил ассоциации:
class Division < ActiveRecord::Base
belongs_to :league
has_many :teams
end
class League < ActiveRecord::Base
has_many :divisions
end
class Team < ActiveRecord::Base
belongs_to :division
accepts_nested_attributes_for :division
has_one :captain, :class_name => "User"
accepts_nested_attributes_for :captain
has_many :rosters
has_many :players, :through => :rosters, :source => :user
accepts_nested_attributes_for :players
validates_presence_of :name
validates_uniqueness_of :name
end
class User < ActiveRecord::Base
has_many :authentications
has_many :rosters
has_many :teams, :through => :rosters
belongs_to :team
end
А вот и мой сгенерированный файл схемы.
- Правильно ли я определил ассоциации моделей?
- Как мне назначить игрока или капитана в команду, когда я создаю или редактирую команду?
Любая помощь будет принята с благодарностью.