如何通过ActiveModel :: Serializers(v0.10.0.rc1)将动态值用于缓存键

以利公爵

我正在为标签和翻译使用数据库驱动的解决方案,我想在序列化程序级别上对其进行缓存。这是我的序列化器。

class AppLabelSerializer < ActiveModel::Serializer
  cache key: 'app_label', expires_in: 3.hours
  attributes :id, :key, :label, :label_plural

  def key
    object.app_label_dictionary.key
  end
end

问题是我需要为每种语言缓存标签,因此需要在键中的某处指定语言。我尝试了以下解决方案:

cache key: "#{scope.app_language.name}/app_label", expires_in: 3.hours

但是由于scope某些原因,此处的值不可用。

以利公爵

在AMS github页面上发布了一个问题,并与@joaomdmoura和@groyoh来回交流,直到我们提出了这个临时解决方案。它对我有效,直到AMS对最佳解决方案做出正式决定之前,它将一直有效。

module ActiveModel
  class Serializer
    class Adapter
      def cache_key
        key = @klass._cache_key
        key = @cached_serializer.instance_exec &key if key.is_a?(Proc)
        key ? "#{key}/#{@cached_serializer.object.id}-#{@cached_serializer.object.updated_at}" : @cached_serializer.object.cache_key
      end
    end
  end
end

class AppLabelSerializer < ActiveModel::Serializer
  cache key: ->(){ "#{scope.app_language.name}/app_labels" }, expires_in: 3.hours
  attributes :id, :label, :label_plural    
end

它看起来很有趣,但是是的,您只需将ActiveModel模块的扩展名直接粘贴到您现有的序列化文件中即可。

注意:这仅适用于v0.10.0.rc1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何重新排列这些缓动函数以接受v0,v1和t?

来自分类Dev

ffmpeg-输入链接in1:v0参数(大小640x640,SAR 16:9)与相应的输出链接in0:v0参数(640x640,SAR 427:240)不匹配

来自分类Dev

如何设置log10(0)的返回值?

来自分类Dev

ASP经典页面冻结,查询字符串包含值“ etc.com?v0=%25n”

来自分类Dev

为什么ffmpeg的v0,v1和v2仍在积极开发中?ppa:jon-severinsson / ffmpeg怎么了?

来自分类Dev

重建RAID 1 + 0(10)系统

来自分类Dev

用于生成 [((0,0),0), ((0,1),0), ((1,0),0), ((1,1),0)] 的代码实际上给出了 [0 , 0, 0, 1, 1, 0, 1, 1],如何解决?

来自分类Dev

如何在 Java 矩阵(二维数组)中围绕 10 x 10 0 的矩阵制作 1 的“边界”

来自分类Dev

如何设置对字符串大小= 0或最小值= 5,最大值= 10的验证?

来自分类Dev

如何将向量归一化到 [0 10] 范围

来自分类Dev

如何使此脚本返回数字0-9而不是1-10

来自分类Dev

如何从10%(而不是0)开始滚动进度条?

来自分类Dev

如何删除.0而不弄乱数字10

来自分类Dev

如何将 mat-slide-toggle 用于后值 1 或 0

来自分类Dev

有什么办法可以循环通过这些数字:-1 0、1 0、0 -1、0 1

来自分类Dev

无法将类型'NSNull'(0x10aa1b600)的值强制转换为'NSString'(0x10b4dab48)

来自分类Dev

Swift JSON 错误无法将“__NSArrayM”(0x10b2cba88)类型的值转换为“NSDictionary”(0x10b2cd1a8)

来自分类Dev

如何将A + 0> 0简化为A> 0?

来自分类Dev

Windows 10更新卡在0%

来自分类Dev

10-eth0.network

来自分类Dev

从 0 开始并继续增加 10

来自分类Dev

MIPS问题:返回($ v0),参数,jal和jr $ ra(包括代码)

来自分类Dev

WReq简单发布请求-由于使用':='而导致(FormValue v0)没有实例错误

来自分类Dev

为什么在循环中使用$ v0寄存器会返回错误的输出?

来自分类Dev

WReq简单发布请求-由于使用':='而导致(FormValue v0)没有实例错误

来自分类Dev

在 li $v0, 8 中 8 是什么意思?米普

来自分类Dev

DecimalField将零转换为0E-10

来自分类Dev

将小数字转换为从0到10的比例

来自分类Dev

iOS 10将MPNowPlayingInfoPropertyPlaybackRate设置为0使锁定屏幕空白

Related 相关文章

  1. 1

    如何重新排列这些缓动函数以接受v0,v1和t?

  2. 2

    ffmpeg-输入链接in1:v0参数(大小640x640,SAR 16:9)与相应的输出链接in0:v0参数(640x640,SAR 427:240)不匹配

  3. 3

    如何设置log10(0)的返回值?

  4. 4

    ASP经典页面冻结,查询字符串包含值“ etc.com?v0=%25n”

  5. 5

    为什么ffmpeg的v0,v1和v2仍在积极开发中?ppa:jon-severinsson / ffmpeg怎么了?

  6. 6

    重建RAID 1 + 0(10)系统

  7. 7

    用于生成 [((0,0),0), ((0,1),0), ((1,0),0), ((1,1),0)] 的代码实际上给出了 [0 , 0, 0, 1, 1, 0, 1, 1],如何解决?

  8. 8

    如何在 Java 矩阵(二维数组)中围绕 10 x 10 0 的矩阵制作 1 的“边界”

  9. 9

    如何设置对字符串大小= 0或最小值= 5,最大值= 10的验证?

  10. 10

    如何将向量归一化到 [0 10] 范围

  11. 11

    如何使此脚本返回数字0-9而不是1-10

  12. 12

    如何从10%(而不是0)开始滚动进度条?

  13. 13

    如何删除.0而不弄乱数字10

  14. 14

    如何将 mat-slide-toggle 用于后值 1 或 0

  15. 15

    有什么办法可以循环通过这些数字:-1 0、1 0、0 -1、0 1

  16. 16

    无法将类型'NSNull'(0x10aa1b600)的值强制转换为'NSString'(0x10b4dab48)

  17. 17

    Swift JSON 错误无法将“__NSArrayM”(0x10b2cba88)类型的值转换为“NSDictionary”(0x10b2cd1a8)

  18. 18

    如何将A + 0> 0简化为A> 0?

  19. 19

    Windows 10更新卡在0%

  20. 20

    10-eth0.network

  21. 21

    从 0 开始并继续增加 10

  22. 22

    MIPS问题:返回($ v0),参数,jal和jr $ ra(包括代码)

  23. 23

    WReq简单发布请求-由于使用':='而导致(FormValue v0)没有实例错误

  24. 24

    为什么在循环中使用$ v0寄存器会返回错误的输出?

  25. 25

    WReq简单发布请求-由于使用':='而导致(FormValue v0)没有实例错误

  26. 26

    在 li $v0, 8 中 8 是什么意思?米普

  27. 27

    DecimalField将零转换为0E-10

  28. 28

    将小数字转换为从0到10的比例

  29. 29

    iOS 10将MPNowPlayingInfoPropertyPlaybackRate设置为0使锁定屏幕空白

热门标签

归档