1

如果条件为假,它是否返回空数组或 nil?例如:

@result=Result.where(:test_id=>test_id, :user_id => current_user.id).first

如果没有这样的 test_id 和 user_id 的结果。

我只是不明白,我认为第一个选项,但这返回零。

4

4 回答 4

3

您的变量由两部分构成,第一部分返回一个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

我建议在 Rails 控制台中键入这些类型的命令,以查看结果。

于 2013-04-23T08:12:12.773 回答
0

您也可以使用这个简单的查询...

@result=current_user.results.find_by_test_id(:test_id)
于 2013-04-25T05:52:41.580 回答
0

对于您的问题,您可以使用这样的代码。

@result=Result.where(:test_id=>test_id).(:user_id => current_user.id).first
于 2013-04-23T08:01:09.033 回答
0

您可以将 #bang 与方法 .first 一起使用! 例如:

@result=Result.where(:test_id=>test_id, :user_id => current_user.id).first!

它应该返回 ruby​​ 将在表“结果”中遇到的第一个元素。
它应该有帮助。

于 2013-04-23T09:22:03.407 回答