1

条件が false の場合、空の配列または nil を返しますか? 例えば:

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

そのようなtest_idとuser_idで結果がない場合。

わかりません。最初のオプションだと思いましたが、これはnilを返します。

4

4 に答える 4

3

変数は 2 つの部分で構成され、最初の部分はActiveRecord::Relation(本質的に配列である)を返します。

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

 > @result_array.class
  => ActiveRecord::Relation

[]結果がない場合は空です ( として表示されます)。

2 番目は最初の項目を返します。または(空の配列の場合) nil:

> (1..10).first
 => 1

> [].first
 => nil

@first_or_nil = @result = @result_array.first

これらのタイプのコマンドを Rails コンソールに入力して、結果を確認することをお勧めします。

于 2013-04-23T08:12:12.773 に答える
0

あなたの問題のために、このコードのように使うことができます。

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

メソッド .first で #bang を使用するには、次のようにします!

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

ruby がテーブル「results」で出会う最初の要素を返す必要があります。
それは役立つはずです。

于 2013-04-23T09:22:03.407 に答える