2011-06-16 63 views
3

红宝石1.9.2p180,Rails的3.0.8,1.2.0 attr_encryptedattr_encrypted不保存到数据库

所以,在我的模型,我有以下:

attr_encryptor :email, :key => "awesome_key" 

而在数据库中,我有一个名为“encrypted_email”的文本列。

在控制台中,一切都在内存中运行。 encrypted_email属性使用加密版本和所有内容进行更新。但是当我去拯救它时,没有任何反应。

虽然搞乱了它,但我发现模型的更改散列并不反映对encrypted_email的更改,即使我尝试手动设置值。

我在这里做错了什么或者是attr_encrypted破?有谁知道事情如何被添加到更改散列?是否有方法调用或者我可以添加attr_encrypted生成的setter方法,以便在哈希中显示更改?

谢谢!

+0

日志显示包含encrypted_email的更新语句吗?我使用Rails 3.0.10和attr_encrypted 1.2.1,没有任何问题。我有attr_encrypted:ssn,:key =>'whatever',:encode => true。 attr_encryptor应该是别名来做同样的事情。 – 2012-11-16 19:58:02

+0

@BrianDeterling谢谢。我忘了这个问题......我应该关闭它。 attr_encrypted中存在一个关于如何创建getter和setter的错误。结果,数据值没有被标记为已更改并且未保存到数据库(因此日志中的更新语句)。我在我的最后做了一个快速的猴子补丁来解决问题。我没有把我的补丁提交给社区,因为如果你知道我的意思,我不觉得它是“值得”的:-)在某些时候,Ruby技能更好的人提交了一个补丁并修复了它。 – brettish 2012-12-13 20:29:53

+1

@brettish:你可以在GitHub或类似的东西上发布你的补丁作为Gist吗? – 2013-07-19 15:19:13

回答

0

它看起来像社区修复了错误。当我试图使它工作时,我只是在错误的时间显然在错误的地方:-)