Анализ сообщения в определенном формате, а затем повторное сохранение его в базе данных, где оно может быть отредактировано позднее, глупо.Мне очень жаль, что я так туп, но такой способ в корне нарушен по одной основной причине: когда пользователь пойдет позже редактировать сообщение, он увидит отформатированный текст , если вы не отформатируете его обратно .Вы действительно хотите нести ответственность за это?
Я надеюсь, что нет.Поскольку вы программист, вы, естественно, ленивы и хотели бы сделать все за несколько шагов.
Что бы я порекомендовал сделать, чтобы решить эту проблему, это проанализировать сообщение при его отображении настраница.Прежде чем кричать на меня, что это требует больших вычислительных ресурсов, если у вас большое количество попаданий, выслушайте меня.Когда он отображается на странице, вы можете затем кэшировать его следующим образом:
<% cache comment do %>
# code goes here
<% end %>
Это сохранит конечный вывод в любом кеше, который вы настроили с помощью Rails, возможно Memcached илиRedis, используя ключ кеша, который включает updated_at
отметку времени комментария.Обратите внимание на это, это будет полезно позже.
Извлечение из этого кэша будет быстрее, чем его синтаксический анализ, и вам будет проще, чем конвертировать сообщение назад и вперед между его версиями.
При обновлении комментария отметка времени updated_at
будет отличаться, поэтому новый комментарий будет сначала отображаться, а затем кэшироваться.В Memcached (так мне сказали) он очистит самый старый ключ кэша, на который не ссылались, если ему потребуется больше памяти, тем самым очистив старые комментарии.