不同的组件,不同的数量,不同的规则......太多了!

时间:2011-01-21 07:04:08

标签: ruby-on-rails json ruby-on-rails-3

假设我有一个产品,它由两个组件组成,组件A的X数量和组件B的数量。

当我在表单或用户中选择它进行编辑时,我会带上默认数量,但是我需要允许用于将X编辑为他们喜欢的任何数字,但如果他们选择这样做,我需要更新我的数量,永远是他们选择作为新X的双倍。

这是业务规则查找此产品的方式。还有许多其他产品,每个产品都有自己的组件数量和相互关联的数量。随着规则经常变化(并且有很多规则),最好的方法是什么?

有人建议在服务器端使用JSON进行验证,但我对此非常陌生,我至少需要一些简单的示例来让我了解服务器如何处理它以及它如何处理。

我感谢任何建议!

1 个答案:

答案 0 :(得分:0)

在用户实际按下Save或Update或其他任何内容之前,我认为您不需要任何服务器验证。在为用户呈现表单时,包含一些处理规则的简单js函数。

因此,如果用户更改X数量的值,则通过onChange或onBlur事件将所有客户端的Y数量设置为两倍。然后,当用户将数据发布到服务器时,请检查模型中某些自定义验证回调的数量是否有效,如果不是则会引发错误。

以下是模型的一个示例:

class Product < ActiveRecord::Base
  X_Y_RATIO = 2

  validate :x_y_ratio

private
  def x_y_ratio
    (self.y_qty / self.x_qty) == X_Y_RATIO
  end
end

因此,如果x_y_ratio方法返回false,则不会保存产品。