Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 Raisl 4-attr_加密:如何使用select on加密值解密值_Ruby On Rails_Ruby On Rails 4_Attr Encrypted - Fatal编程技术网

Ruby on rails Raisl 4-attr_加密:如何使用select on加密值解密值

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

我们正在使用下面加密的属性加密表/模型-RegisteredDomain中的值

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 |注册的|域|注册的|域。域名结束