2013-08-01 169 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