Как реализовать бизнес-правила в Rails? - PullRequest
1 голос
/ 24 декабря 2010

У меня есть набор бизнес-правил, которые мне нужно применить, например:

  1. Если current_user не «admin», то не разрешать и давать сообщение «ограниченный доступ»
  2. Если на вопрос дан ответ, то не разрешайте другой другой ответ и дайте сообщение «вопрос уже получен»

Теперь все это в основном: «если X ложно, то сообщение Y".

Итак, я сделал этот метод:

def evaluate_rules rules
  rules.each_pair do |state,message|
    if not (state == true)
      return false,message
    end
  end
  true
end

Значит, меня так называют:

evaluate_rules { 
  (1==1) => "good", #rule will pass
  (1==2) => "bad" #rule will fail
}

Но я получаю ошибку syntax error, unexpected tASSOC (SyntaxError) для(1==1) и (1==2) хеш-ключи.

Как поместить значения true / false в хеш-ключ?

Кроме того, я не могу не думать, что кто-то, возможно, решил эту проблемупроблема "правил" раньше, какие-либо лиды?

ОБНОВЛЕНИЕ

Исправлено.Иногда Руби расстраивает меня.Вызов должен быть таким:

evaluate_rules Hash.new({ 
  (1==1) => "good", #rule will pass
  (1==2) => "bad" #rule will fail
})

выглядит немного некрасиво, но работает

1 Ответ

1 голос
/ 24 декабря 2010

Есть несколько способов сделать это, но лучше всего использовать встроенные валидаторы Rails. Они настроены на то, чтобы описать то, что вы описываете. В каждой модели вы можете создавать проверки, которые затем добавляют сообщения в массив ошибок, если проверка не удалась. Существует несколько встроенных проверок и возможность создавать полностью пользовательские проверки. Это подход, который я бы применил к двум случаям использования, перечисленным выше.

Некоторые примеры здесь: http://omgbloglol.com/post/392895742/improved-validations-in-rails-3

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