У меня есть набор бизнес-правил, которые мне нужно применить, например:
- Если current_user не «admin», то не разрешать и давать сообщение «ограниченный доступ»
- Если на вопрос дан ответ, то не разрешайте другой другой ответ и дайте сообщение «вопрос уже получен»
Теперь все это в основном: «если 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
})
выглядит немного некрасиво, но работает