ActiveRecord用于重复计数的表定义类型

时间:2012-03-23 18:13:23

标签: database database-design activerecord database-connection

我正在为课程安排应用设置一个表格。该课程每个日历月只有8个席位。

在我的表格中,我需要有关ActiveRecord类型的帮助,我应该选择auto_increment最多为8,然后在任何给定月份停止

我还需要帮助我应该选择一个月的ActiveRecord类型。我是否应该对课堂座位使用相同的想法,并将此编号停在12(12月)并刷新回1(假设我当然在表格中包含年份属性)

感谢, MO12

1 个答案:

答案 0 :(得分:0)

我会将8个座位的最大逻辑放入您的应用程序,而不是您的数据库。

您可能需要两个表:classesseats。由于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

最后使用两个整数列来表示年份和月份是一个好主意。您可能还想在这些列中添加索引。

相关问题