ruby-on-rails – 使用嵌套对象进行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会失效,但事实并非如此.

编辑:为学生添加了触摸功能,以便在更新时使学校无效.

最佳答案 为了帮助别人,我现在正在做的事情是:

我将学生秀视图分成:

学生/ show.json.rabl:

extends "students/min_show"

node :school do |student|
  partial("shared/school", :object => student.school)
end

和学生/ min_show.json

object @student
cache @student
attribute :name, :gender, :age

这样我仍然可以读取学生的缓存,但学校总是从模板中呈现并单独缓存.

点赞