2011-02-03 11 views
7

非常に初心者の質問です。 私が示すように、Railsの3のクエリインターフェイスを使用しています:これは実際に私は、クエリに関連するユーザーオブジェクトをしたいのActiveRecord ::関係オブジェクトを、返却されActiveRecord :: Relationをモデルに変換する

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 

。これをUserオブジェクトにするにはどうすればよいですか?

答えて

12

allfirst、またはfindでクエリを「コミット」する必要があります。

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

ありがとうございます。 –

+2

Rails4では 'all'を 'where(..)'と非推奨にしています。最近のバージョンのRailsで試したところ、この警告が出ました: 削除警告:関係#はすべて非推奨です。 にリレーションをeager-loadする場合は、#loadを呼び出すことができます(例: 'Post.where(published:true).load')。リレーションからのレコードの配列 を取得したい場合は、#to_aを呼び出すことができます(例えば、 'Post.where(published:true).to_a')。 (irb_bindingから (irb)に電話しました: – omnisis

+0

正しいです。私の答えはRails 3でした。 –