非常棘手的Rails验证问题

时间:2011-06-26 02:17:56

标签: ruby-on-rails validation

我在验证时遇到了一个非常棘手的问题。基本上,我有一个连接模型screen_weights,带有一个名为“weight”的额外属性。连接模型适用于两种模型:分数和屏幕。

屏幕has_many:得分=>:screen_weights

得分has_many:屏幕截图=>:screen_weights

然后根据体重对我的分数进行称重。

让我说我有

screen_id = 1,score_id = 1,重量= 0.3;

screen_id = 1,score_id = 2,体重= 0.7。

通过这种方式,我将拥有一些屏幕1,它有两个分数(1和2),分别为0.3和0.7。需要进行的验证总和为1。 如果分数的权重加到1,我将需要检查特定的屏幕。我将如何实现这一目标? SELECT SUM(权重)FROM screen_weights GROUP BY screen_id可以给我这个信息。但是我怎么能为它编写验证呢? 非常感谢

1 个答案:

答案 0 :(得分:3)

class Screen
  has_many :screen_weights
  validate :weights_sum_to_1

  def weights_sum_to_1
    errors.add_to_base("Weights must add up to 1") unless screen_weights.sum(:weight) == 1
  end
end

我认为这就是你想要的,但是从你对这个问题的解释来看,很难确切知道这些课程的作用。