2011-02-03 10 views
7

बहुत शुरुआती प्रश्न। मैं दिखाया गया है रेल 3 की क्वेरी इंटरफ़ेस का उपयोग कर रहा हूँ:एक ActiveRecord :: किसी मॉडल में संबंध

class User < ActiveRecord::Base 

def self.authenticate 
if Rails.env = 'development' 
    self.where('username = ?', 'development_user') 
else 
    self.where('username = ?', request.env['REMOTE_USER']) 
end 
end 

end 

यह एक ActiveRecord :: रिलेशन वस्तु है, जहां वास्तव में मैं उपयोगकर्ता उद्देश्य यह है कि क्वेरी से संबंधित चाहते लौटा रहा है। मैं इसे उपयोगकर्ता ऑब्जेक्ट में कैसे बदलूं?

उत्तर

12

आपको all, first, या find के साथ क्वेरी को "प्रतिबद्ध" करने की आवश्यकता है।

def self.authenticate 
user = Rails.env.development? ? "development_user" : request.env['REMOTE_USER'] 
self.where('username = ?', user).first 
end 
+0

धन्यवाद, पता था कि यह कुछ आसान था। –

+2

ध्यान दें कि ऐसा लगता है कि 'जहां' का उपयोग 'जहां (..)' रेलवे 4 में बहिष्कृत किया गया है। जब मैंने रेल के हाल के संस्करण पर इसे आजमाया तो मुझे यह चेतावनी मिली: अस्वीकरण चेतावनी: संबंध # सभी को बहिष्कृत किया गया है। यदि आप उत्सुक लोड करना चाहते हैं, तो आप #load (उदा। 'पोस्ट.कॉम (प्रकाशित: सत्य) .load' पर कॉल कर सकते हैं। यदि आप किसी संबंध से रिकॉर्ड्स के प्राप्त करना चाहते हैं, तो आप #to_a (उदा। 'पोस्ट.where (प्रकाशित: सत्य) .to_a' पर कॉल कर सकते हैं)। ( (irb) पर irb_binding से कहा जाता है: 39) – omnisis

+0

यह सही है। मेरा जवाब रेल 3 के लिए था। –

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