Вот мои взгляды Рабля:Rabl кэширование с вложенным объектом
студенты/show.json.rabl
object @student
cache @student
attribute :name, :gender, :age
node :school do |student|
partial("shared/school", :object => student.school)
end
общего/_school.json.rabl
object @school
cache @school
attributes :id, :name
student.rb:
class Student < ActiveRecord::Base
belongs_to :school, :touch => true
end
school.rb
class School < ActiveRecord::Base
has_many :students
end
Так что, когда я обновляю студента, кэш будет аннулирована, как и ожидалось. Проблема в том, что когда я обновляю школу, ученики не получают обновленных атрибутов школы. Я бы подумал, что кеш @school в частичном случае станет недействительным, когда я обновляю школьную модель, но это, похоже, не так.
EDIT: Добавлен контакт ученика, чтобы аннулировать школу при обновлении.
Это определенно работает, если ученик обновлен. Но, когда школа обновляется, это не работает наоборот. В принципе, я ищу способ сделать 2 чтения кеша, один для учеников и один для каждой школы. – ankimal