Я бы добавил 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
Наконец, хорошей идеей будет использование двух целочисленных столбцов для года и месяца. Вы, вероятно, хотите добавить индекс для этих столбцов.