2013-08-01 38 views
0

我搜索数据库的唯一关键,我得到它回来,但作为一个数组我接下来要采取的第一个对象,并发送至我的观点Ruby on Rails的控制器WHERE语句

def watch 
    @video = Video.where("key = ?", params[:key]) 
    @video = @video[0] 
end 

我感觉我正在做这个错误的方式。键总是唯一的,所以它永远不会返回多个对象,我总是希望第一个对象。我怎样才能做到这一行?

回答

6
@video = Video.where("key =?" , params[:key]).first 
6

您可以使用

@video = Video.find_by_key(params[:key]) 

或者

@video = Video.where(key: params[:key]).first 

这些返回nil如果该键不存在。如果你喜欢一个ResourceNotFound异常使用爆炸方法:

@video = Video.find_by_key!(params[:key]) 

或者

@video = Video.where(key: params[:key]).first! 
+0

关键在我的情况是指列在数据库中,这是否仍是这项工作? –

+0

噢好吧我看到你在做什么之后阅读这个,看起来像.first更赞赏,因为这个版本更多不赞成http://api.rubyonrails.org/classes/ActiveRecord/Base.html –

+3

这些被称为[动态(http://guides.rubyonrails.org/active_record_querying.html#dynamic-finders),它们在Rails 4中已被弃用。 – Stefan