У меня есть метод, который берет условие и элемент из массива условий и массива элементов, где любое количество условий проверяется по любому количеству элементов.Условия и элементы являются хешами. В основном, для условия и элемента, переданных методу, выясните, с каким атрибутом элемента должно проверяться условие.Список на самом деле длиннее, и, глядя на то, как сделать это лучше (кажется, что это может быть более кратким и, возможно, более рубиновым), больше ничего не сработало (пока), поэтому я хотел бы получить некоторую информацию о том, как вы могли бы реорганизовать это:
def check_condition(condition, item)
case condition.attribute
when :author
i = item.author.name;
when :title
i = item.title
when :body
i = item.body
when :domain
i = URI(item.url).host
when :account_age
i = item.author.author_age
end
@logger.info "#{i} to be checked if #{condition.query} #{condition.attribute}"
test_condition(condition, item, i)
end
РЕДАКТИРОВАТЬ:
Просто, чтобы прояснить, элементы и условия - это хэши (Hashie :: Mash, если быть точным), где условия в основном создаются из файла конфигурации, который может быть чем-то вроде:
[submitted_link, account_age, is_less_than, 30, remove]
, что заканчивается примерно так:
{subject: submitted_link, attribute: account_age, query: is_less_than, what: 30 action:remove}
И вы можете увидеть, что здесь происходит в целом, если вы так склонны: https://github.com/blueblank/reddit_modbot/blob/master/lib/modbot/modbot_check.rb
РЕДАКТИРОВАТЬ 2:
Реальность решения состояла в том, чтобы несколько упорядочить мою переменную терминологию для условия и предмета, чтобы ее можно было уменьшить до 1 строки
i = item.send(condition.attribute)
без беспорядка, минимальное влияние