如果条件为假的方法

时间:2013-04-23 07:59:32

标签: ruby-on-rails

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

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

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

我只是没有得到,我认为第一个选项,但这会返回nil。

4 个答案:

答案 0 :(得分: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控制台中输入这些类型的命令以查看结果。

答案 1 :(得分:0)

对于您的问题,您可以像使用此代码一样使用。

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

答案 2 :(得分:0)

你要使用#bang和方法。{first ! 例如:

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

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

答案 3 :(得分:0)

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

@result=current_user.results.find_by_test_id(:test_id)