选择查询会在结果中添加attr_encrypted属性(即使未请求)



我正在努力解决Rails 5.2.4.1应用程序的问题。配置如下:

  • Ruby 2.6.5
  • 轨道5.2.4.1
    • attr_encrypted 3.1.0

我有一个名为Chicken的模型,它有两个属性:name-是attr_encrypted,number-是一个普通整数字段。每当我执行查询以检索除attr_encrypted字段之外的任何其他字段时,它仍然会附加到结果中,并且总是nil:

Chicken.select(:number) => #<ActiveRecord::Relation [#<Chicken id: nil, number: nil, name: nil>]>

请记住,这只是一个测试应用程序,我试图在最初遇到这种情况的实际应用程序上执行的查询更为复杂。

有没有办法防止attr_encrypted将加密字段附加到查询结果?由于当前的结果意味着我必须重新编写应用程序中所有现有的查询,或者以某种方式为这些类型的字段添加一个过滤器

此问题是由attr_encrypted的更改引起的。据我所知,在不修改库的情况下,没有任何简单的方法可以删除这个属性,但没有人主动处理它,所以这似乎不太可能。

据我所见,唯一的选择是:

  • 使用其他库
  • 覆盖模型attributes方法以排除该值(可能会产生不希望的结果(。它仍将显示在活动记录提供的其他方法中
  • 处理它
  • 其他我找不到的东西

处理它的几种方法:

  • 使用库为前端生成JSON响应,以仅包含您想要的属性
  • 像design一样重新定义serializablehash来删除属性。(这比重新定义attributes方法本身要安全得多

相关内容

  • 没有找到相关文章

最新更新