Разные компоненты, разные количества, разные правила ... слишком много! - PullRequest
0 голосов
/ 21 января 2011

Предположим, у меня есть продукт, который состоит из двух компонентов: X Кол-во Компонента A и Y Кол-во Компонента B.

Когда я выбираю его в форме или пользователь для редактирования, я приношуколичество по умолчанию, но мне нужно разрешить использованным редактировать X на любое число, которое им нравится, но если они захотят это сделать, мне нужно обновить свой Y qty, чтобы он всегда был вдвое больше того, что они выбрали в качестве нового X.

Так выглядит бизнес-правило для этого продукта.Есть много других продуктов, и у каждого есть свое собственное количество компонентов и связанных количеств.Каков наилучший способ справиться с этим, так как правила меняются довольно часто (а их много)?

Кто-то предложил использовать JSON для проверки на стороне сервера, но я новичок в этом, и мне нужен хотя бы какой-то простой пример, чтобы понять, как это будет обрабатываться сервером и какбудет выглядеть так.

Я ценю любые советы!

1 Ответ

0 голосов
/ 21 января 2011

Я не думаю, что вам нужны какие-либо проверки сервера, пока пользователь фактически не нажмет Save или Update или что-то еще.При отображении формы для пользователя включите несколько простых функций js, которые обрабатывают правила.

Таким образом, если пользователь изменяет значение для X qty, тогда установите Y qty, чтобы удвоить его через события onChange или onBlur, все на стороне клиента.Затем, когда пользователь отправляет данные на сервер, проверьте, являются ли количества действительными с помощью какого-либо настраиваемого обратного вызова проверки в вашей модели, и выведите ошибку, если это не так.*

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, продукт не будет сохранен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...