如果條件爲假,它會返回空數組還是零? 例如:如果條件爲假,哪裏方法
@result=Result.where(:test_id=>test_id, :user_id => current_user.id).first
如果不存在具有這樣爲test_id和USER_ID沒有結果。
我只是不明白,我認爲第一個選項,但這返回零。
如果條件爲假,它會返回空數組還是零? 例如:如果條件爲假,哪裏方法
@result=Result.where(:test_id=>test_id, :user_id => current_user.id).first
如果不存在具有這樣爲test_id和USER_ID沒有結果。
我只是不明白,我認爲第一個選項,但這返回零。
你的變量被構造成兩個部分,第一部分返回一個ActiveRecord::Relation
(這是基本上陣列):
@result_array = Result.where(:test_id=>test_id, :user_id => current_user.id)
> @result_array.class
=> ActiveRecord::Relation
裏面是空的(顯示爲[]
),如果有沒有結果。
第二返回的第一個項目,或(如果它是空數組)nil
:
> (1..10).first
=> 1
> [].first
=> nil
@first_or_nil = @result = @result_array.first
我建議這些輸入型的軌道控制檯命令來看看有什麼結果。
對於您的問題,您可以使用像這樣的代碼。
@result=Result.where(:test_id=>test_id).(:user_id => current_user.id).first
很抱歉,但你的回答不響應的問題,如果沒有發現什麼返回方法。 – 2013-04-23 08:04:56
您可以使用@ result.count方法檢查結果。如果發現非記錄,則它給出0。 – 2013-04-23 08:06:55
但由於某種原因,它返回nil而不是空數組,這種語法在其他情況下運行良好,所以這不是原因。我想知道爲什麼呢? – 2013-04-23 08:10:15
你的使用#bang與方法。首先!
例如:
@result=Result.where(:test_id=>test_id, :user_id => current_user.id).first!
它應該返回的第一個元素絲毫紅寶石將在表符合「成果」。
它應該有所幫助。
如果where部分找不到結果,這不會引發錯誤嗎? (而不是'nil') – 2013-04-23 09:58:01
您也可以使用這個簡單的查詢...
@result=current_user.results.find_by_test_id(:test_id)
我覺得第一部分返回'ActiveRecord :: Relation' – 2013-04-23 10:38:21
@Thahakp很好的一點。 – 2013-04-23 10:43:55