Помогите прояснить мое мышление для рельсовых ассоциаций - PullRequest
1 голос
/ 18 июля 2010

Я создаю приложение для рельсов, которое позволяет спортсменам создавать и управлять расписаниями для спорта скелета. Я не могу обернуть свой мозг вокруг правильных ассоциаций между моими моделями. Вот что у меня так далеко. Спортсмены имеют Заезды , которые состоят из нескольких Сплитов . Каждый отдельный сплит должен быть связан с определенным временем Глаз на бобслее / скелете Трек . Коллекция прогонов на определенную дату, на определенную дорожку и на конкретную Circuit организована в Расписание . Спортсмен создает расписание, добавляет прогоны и разбивает их в расписание, а затем имеет возможность просматривать и составлять графики прогонов в расписании. Уф. Вот некоторый код:

class Athlete < ActiveRecord::Base
  has_many :runs
  has_many :timesheets, :through => :runs
end

class Run < ActiveRecord::Base
  belongs_to :athlete
  belongs_to :timesheet
  has_many :splits
end

class Timesheet < ActiveRecord::Base
  has_many :runs
  has_many :athletes, :through => :runs
  belongs_to :track
  belongs_to :circuit
end

class Split < ActiveRecord::Base
  belongs_to :run
  belongs_to :eye

end

class Track < ActiveRecord::Base
  has_many :timesheets
  has_many :eyes
end

class Circuit < ActiveRecord::Base
  has_many :timesheets
end

class Eye < ActiveRecord::Base
  has_many :runs
  has_many :splits
  belongs_to :track
end

Кажется, здесь я делаю ненужные ассоциации. Мое самое большое разочарование было связывание расколов с глазками времени и дорожками в таблице представления расписания. Заголовки таблиц - это временные точки, которые были включены в тот день (не каждый временной интервал включен каждый день), тогда как ячейки таблицы представляют собой фактические времена разделения (иногда временной интервал пропускает определенное разделение для спортсмена во время бега).

Видите ли вы какое-нибудь место, где можно улучшить эти ассоциации?

1 Ответ

1 голос
/ 18 июля 2010

Я предлагаю начать с минимальных ассоциаций, чтобы покрыть вашу схему.Затем добавьте другие позже, чтобы помочь с мнениями.

Например, это звучит как

У дорожек много контуров

У контуров много глаз

Итак, первая модель.Вам не нужны глаза, чтобы принадлежать к трекам тоже.- Это может быть добавлено позже, если необходимо.

Точно так же в расписании есть много цепей.Нет необходимости (изначально) также записывать трек в расписании.Вы можете найти связь между треком и расписанием через схему.

Помните, что выходные представления - это, по сути, отчеты по данным.Таким образом, вы можете легко получить желаемое представление, которое потребует нескольких вызовов базы данных или другого массива данных, чтобы затем создать нужные данные для представления / отчета.

Например, ваш отчет звучит так, как будто вам сначала нужно выяснитьприменимо время глаз.Затем для каждого глаза извлекается разделение.

Таким же образом для полей ввода вы можете искать информацию от имени пользователя.Например, вы можете выбрать группу опций , которая будет иметь группы для каждой дорожки со схемами в качестве отдельных элементов.

С другой стороны, если это не сложно, тогда любой можетсделай это ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...