2014-02-18 2 views
0

Пусть я User модели и Comment модели, belongs_to :userRails 4 кэширования и belongs_to отношения

Я понимаю, что делать, если я хочу, чтобы кэшировать страницу пользователя с комментариями, перечисленных (через «русское кеширование кукольного) - я глобальная cache блок для просмотра всего пользователя и помещается внутри многих блоков кэша для каждого комментария пользователя и добавляет touch: true для ассоциации belongs_to :user. Поэтому, когда изменяется какой-либо комментарий, есть только 2 кэша для обновления - для этого комментария и для этого пользователя.

Но теперь мне нужно кэшировать комментарий вида, который выглядит как:

= comment.user.name 
= comment.text 

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

Мое текущее решение после сохранения обратного вызова пользователя, которое делает comment.update_all(updated_at: updated_at) и обертывание в блоке cache(comment). Но мне это не нравится, потому что я хочу обнаружить только некоторые изменения полей.

Другим решением является просмотр вида в cache(comment, comment.user), но я думаю, что это хуже, потому что он делает дополнительный запрос для пользователя.

Я пропустил что-то очевидное? Каков ваш опыт?

ответ

0

Я думаю, вы должны использовать has_many :comments, autosave: true в своей модели User.

Смежные вопросы