将ActiveRecord::Relation转换为模型

8

非常初学者的问题。 我正在使用Rails 3的查询接口,如下所示:

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::Relation对象,而我实际上想要与查询相关的User对象。我该如何将其转换为User对象?

1个回答

13

你需要使用 allfirstfind 来"提交" 查询。

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

2
注意:在Rails4中,似乎在'where(..)'中使用“all”已经过时。 当我在最近的版本的Rails上尝试时,我得到了以下警告:    警告:Relation#all已弃用。 如果您想急切地加载关系,则可以调用#load(例如Post.where(published:true)。load)。如果您想从关系中获取记录数组,则可以调用#to_a(例如Post.where(published:true)。to_a)。 (在(irb):39处由irb_binding调用) - omnisis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接