2012-01-16 11 views
6

मैंने attr_encrypted मणि का उपयोग कर तालिका में एक फ़ील्ड एन्क्रिप्ट किया है। अब मैं उस विशेष फ़ील्ड पर क्वेरी करना चाहता हूं जो इसे एक ऐसे मान से तुलना कर रहा है जिसे मैं किसी फॉर्म से पुनर्प्राप्त कर रहा हूं। मैं यह कैसे कर सकता हूँ?रेल 3.1 attr_encrypted मणि (जहां एन्क्रिप्टेड फ़ील्ड पर क्लॉज) के साथ एन्क्रिप्टेड डेटाबेस को क्यूरी करना

EDIT: मुझे कई एन्क्रिप्टेड फ़ील्ड पर क्वेरी करने की आवश्यकता है। उदाहरण के लिए: (का उपयोग कर या में स्थिति है, जिसमें खंड)

उत्तर

3

attr_encrypted अवरोध find_by तरीकों, तो आप ऐसा करने में सक्षम होना चाहिए encrypted_email, encrypted_name आदि पर खोज कर:

class User < ActiveRecord::Base 
    attr_encrypted :email, :key => 'a secret key' 
    attr_encrypted :password, :key => 'some other secret key' 
end 

User.find_by_email_and_password('[email protected]', 'testing') 

यह

User.find_by_encrypted_email_and_encrypted_password('ENCRYPTED EMAIL', 'ENCRYPTED PASSWORD') 
के रूप में लिखा है
+0

क्या सभी 3 एन्क्रिप्टेड रहे हैं मैं कहना है कि मैं ईमेल या उम्र या नाम से पता लगाना चाहते हैं चाहते हैं और? – phoenixwizard

+0

क्या आप ActiveRecord में [गतिशील खोजकर्ता] (http://api.rubyonrails.org/classes/ActiveRecord/Base.html) की अवधारणा से परिचित हैं? –

+0

हां मैं इससे परिचित हूं लेकिन मैंने इसे "या" स्थिति के लिए उपयोग नहीं किया है। मुझे लगता है कि इसका इस्तेमाल केवल "और" के लिए किया जा सकता है। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं। – phoenixwizard

2
class User < ActiveRecord::Base 
    attr_encrypted :email, :key => 'a secret key' 
end 

आप उपयोगकर्ता जिसका ईमेल है पुनः प्राप्त करने के एक प्रश्न लिखने के लिए चाहते हैं '[email protected]' तो आप या तो

012 कर सकते हैं
User.where(encrypted_email: User.encrypt_email('[email protected]')) 

या

User.scoped_by_email('[email protected]') # works only for dynamic scope methods 
+0

क्या आप 'per_attribute_iv_and_salt' मोड कर रहे हैं, तो' encrypt_email' विशेषता विधि के साथ कहां से गुंजाइश का उपयोग कर खोज कर रहा है? – richsinn

+0

@richsinn मैंने इस तरह से कोशिश नहीं की है। लेकिन आप एक शॉट दे सकते हैं :) – vitthal

संबंधित मुद्दे