Ruby on rails Raisl 4-attr_加密:如何使用select on加密值解密值
我们正在使用下面加密的属性加密表/模型-RegisteredDomain中的值Ruby on rails Raisl 4-attr_加密:如何使用select on加密值解密值,ruby-on-rails,ruby-on-rails-4,attr-encrypted,Ruby On Rails,Ruby On Rails 4,Attr Encrypted,我们正在使用下面加密的属性加密表/模型-RegisteredDomain中的值 attr_encrypted :domain_name, :registered_by, :api_key, :key => "65xU4TdZntTV53" 值也会被加密并存储到数据库中。下面的代码将值保存到db registereddomain = RegisteredDomain.new( :domain_name => domain_name, :api_key
attr_encrypted :domain_name, :registered_by, :api_key, :key => "65xU4TdZntTV53"
值也会被加密并存储到数据库中。下面的代码将值保存到db
registereddomain = RegisteredDomain.new(
:domain_name => domain_name,
:api_key => api_key,
:hash_key => hash_key,
:registered_by => ep_id,
:status => status,
:domain_type_id => domain_type_id
)
registereddomain.save
问题在于使用下面的选择来解密值。我们在这里得到加密的值,谁能告诉我们如何在清单中得到递减的值呢
def select_all
@registered_domains = RegisteredDomain.select("id, encrypted_domain_name, domain_type_id, encrypted_api_key, status").order(updated_at: :desc)
return @registered_domains
end
在数据库中以加密模式存储值可能是有原因的。因此,如果要解密该值,只需在实例方法上调用适当的方法:
@registered_domains = RegisteredDomain.select("id, encrypted_domain_name, domain_type_id, encrypted_api_key, status").order(updated_at: :desc)
@registered_domains.first.domain_name
编辑
您可能希望创建一个自定义方法,用于从数据库中提取值:
def self.all_decrypted(columns)
all.map do |record|
columns.map do |column|
record.send(column.to_sym)
end
end
end
RegisteredDomain.all_decrypted([:domain_name,:api_key])这将返回一个数组,
domain_name
,api_key
,如果您能为控制器和视图提供一些示例代码,那就太好了。。
正如我看到的,您直接使用的字段没有属性
选项;因此,在您的数据库中,域名
字段可以表示为加密域名
。因此,在select查询中,您可以尝试将属性加密的\u域名
修改为域名
。
此外,您还应该在任何需要获取加密属性的地方对其进行修改。
(我无法正确地编写完整的代码块,因此我尝试简短地解释它;但只要重命名属性就可以了!)我需要为授权用户解密列表中的所有值,您知道的任何方法请告诉我。请将您的模式文件放在描述
RegisteredDomain
的位置。这将给我一个答案。对我来说,似乎你只拉加密的列,而不是实际的列thnx人,我们已经解决了这个问题,使用对象上的迭代我们现在可以得到清单@注册的|域。每个do |注册的|域|注册的|域。域名结束