Тип определения таблицы ActiveRecord для повторного подсчета - PullRequest
0 голосов
/ 23 марта 2012

Я настраиваю таблицу для приложения планирования классов. В классе будет доступно только 8 мест каждый календарный месяц.

В моей таблице мне нужна помощь с типом ActiveRecord, я должен выбрать, который будет auto_increment до 8, а затем остановится на любой месяц

Мне также нужна помощь с типом ActiveRecord, который я должен выбрать на месяц. Должен ли я использовать ту же идею для мест в классе, и этот номер должен быть остановлен на 12 (для декабря) и обновлен до 1 (при условии, конечно, я включил атрибут года в свою таблицу)

спасибо, MO12

1 Ответ

0 голосов
/ 04 июля 2012

Я бы добавил 8-местную максимальную логику в ваше приложение, а не в вашу базу данных.

Возможно, вам нужны две таблицы: classes и seats. Поскольку class является зарезервированным словом, вы должны использовать что-то вроде SchoolClass:

class SchoolClass < ActiveRecord::Base
  has_many :seats, :dependent => :destroy
end

class Seat < ActiveRecord::Base
  belongs_to :school_class
end

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

class SchoolClass
  MAXIMUM_SEATS = 8

  before_create :validate_limit

  def limit_reached?
    seats.count >= MAXIMUM_SEATS
  end

  private
  def validate_limit
    errors.add :base, "The maximum of this class has been reached" if limit_reached?
  end
end

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

...