Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby Rails attr_加密格式加密属性_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Ruby Rails attr_加密格式加密属性

Ruby on rails Ruby Rails attr_加密格式加密属性,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用并且每当我访问加密属性时我都想得到格式化属性-有什么方法可以做到这一点吗 模型: class User < ApplicationRecord attr_encrypted :balance, key: 'some super secret key', marshal: true end 如果您需要维护一个将balance视为Money构造函数的访问器,您可以避开重写行为的问题,只需使用不同的列即可 e、 g.balance\u new或其他任何内容,然后为创建一个访问器。

我正在使用并且每当我访问加密属性时我都想得到格式化属性-有什么方法可以做到这一点吗

模型:

class User < ApplicationRecord
  attr_encrypted :balance, key: 'some super secret key', marshal: true
end

如果您需要维护一个将
balance
视为
Money
构造函数的访问器,您可以避开重写行为的问题,只需使用不同的列即可


e、 g.
balance\u new
或其他任何内容,然后为
创建一个访问器。balance
balance\u new
创建一个
Money
对象。…

您可以尝试重写,而不是
marshaler
,这样可以更好地访问其他属性。哎呀,链接没有锚定。这里:什么样的物体是
天平
?在这种情况下,让阅读器返回一个
Money
对象对我来说是很奇怪的,因为你不能仅仅将其分配回
balance
进行编写。@Joe我正在处理一些遗留代码库并更改加密逻辑,用户类用于重载
balance
balance=
方法(我不得不离开这里,因为它不能与attr_加密一起工作,老实说,我讨厌这个想法)你能在activerecord中使用一个不同的/新的列,允许你继续使用
余额
访问器吗?
  attr_encrypted :balance, key: 'some super secret key', marshal: true, marshaler: BalanceMarshaler
  module BalanceMarshaler
    extend self

    def dump(data) 
      data.to_s
    end

    def load(data)
      number = Marshal.load(data)
      Money.new(number, currency)
    end
  end