我使用ActiveRecord和Rails 3.2.3使用延遲作業3.0.2。我有一個使用has_secure_password mixin的用戶模型,所以密碼只能被加密存儲。現在我想使用延遲作業發送歡迎電子郵件,該電子郵件應包含未加密密碼的副本。使用自定義屬性延遲作業
創建記錄時,明文密碼在用戶密碼中。但是延遲工作似乎只是對記錄的id進行序列化/反序列化,並通過執行User.find(X)來創建模型的新實例。這樣我的純文本密碼就會丟失,用戶會在他的電子郵件中獲得一個空密碼。
我該如何告訴delayed-job序列化/反序列化自定義的「虛擬」屬性,否則它們不會存儲在數據庫中?
這是我的猴子補丁延遲工作2.x,它工作正常。
class ActiveRecord::Base
def self.yaml_new(klass, tag, val)
klass.find(val['attributes']['id']).tap do |m|
val.except("attributes").each_pair{ |k, v| m.send("#{k}=", v) }
end
rescue ActiveRecord::RecordNotFound
raise Delayed::DeserializationError
end
end
它不適用於延遲作業3.x.我也沒有真正有興趣修復我的猴子補丁,因爲我希望有適當的解決方案這個。
如果我正確理解你的帖子,你通過電子郵件發送純文本密碼。在我看來,在電子郵件中發送純文本密碼是一個安全問題。我不會包括它。有關它在這裏頂部的答案更多信息(http://stackoverflow.com/questions/1069722/sending-username-and-password-through-email-after-user-registration-in-web-appli) – John 2012-08-02 07:04:10