我有一个Ticket and Event模型,其中的关系是Event有很多Tickets。 Ticket模型具有列序列起始值和串行结束值,表示该事件的有效串行nubers的范围。
我想在创建时验证故障单,这样如果使用超出该范围的序列号创建故障单,系统将发出错误,指出该范围无效。
我目前在票证模型验证中的另一个验证是显示140000到149999之间所有事件的有效序列号
validates :serial_number,
presence: true,
numericality: {
only_integer: true,
:greater_than_or_equal_to => 140000,
:less_than => 149999,
:message => "is invalid" },
:uniqueness => { :message => "%{value} has already been taken" }
我需要从Event模型中获取数据并将其放入Ticket验证中。 Rails在模型中是否允许这样的东西?我应该在控制器中做到吗?
答案 0 :(得分:3)
绝对在您的模型中执行此操作。使用custom validations:
validate :serial_number_valid
def serial_number_valid
unless event.serial_number_range.include?(serial_number)
errors.add(:serial_number, "must be within range")
end
end
答案 1 :(得分:0)