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