2011-02-03 9 views
7

pregunta muy para principiantes. estoy usando interfaz de consulta de los carriles 3 como se muestra:Convertir una relación ActiveRecord :: en un modelo

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 

Esto se vuelve un objeto ActiveRecord :: Relation, donde en realidad quiero que el objeto Usuario que se relaciona con la consulta. ¿Cómo convierto esto en un objeto Usuario?

Respuesta

12

Debe "confirmar" la consulta con all, first o find.

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

Gracias, sabían que era algo simple. –

+2

Nota: parece que usar 'todo' con 'donde (..)' está en desuso en Rails4. Cuando lo probé en una versión reciente de Rails, recibí esta advertencia: ADVERTENCIA DE DEPRESIÓN: la relación # está en desuso. Si desea ansiosamente cargar una relación, puede llamar a #load (por ejemplo, 'Post.where (published: true) .load'). Si desea obtener una matriz de registros de una relación, puede llamar a #a_a (por ejemplo, 'Post.where (published: true) .to_a'). (llamado desde irb_binding al (irb): 39) – omnisis

+0

Eso es correcto. Mi respuesta fue para Rails 3. –

Cuestiones relacionadas