1

コントローラーに次の行があります。

user = User.any_of({:user_name => login}, {:email => login})

if user.nil?
  # ...
elsif user.legacy_password.nil? 

そして、このエラーが発生します:

undefined method `legacy_password' for []:Array

なぜこれが起こるのでしょうか?ユーザー オブジェクトは であるはずnilです。少なくともそれはデバッガーが言ったことです。

4

2 に答える 2

3

any_ofメソッドが単一の結果ではなく、結果の配列を返すと仮定しています。おそらく.first、その末尾に追加する必要があります。これにより、ユーザー レコードが得られるか、空の配列が返されるnil場合があります。any_of

user = User.any_of({:user_name => login},{:email => login}).first
于 2012-04-18T16:46:43.757 に答える
1

mongoid ( #any_of) を使用していて、配列を返しているようです。

エラーはlegacy_password配列で呼び出しているためですが、 User モデルで定義されていると思います。

于 2012-04-18T16:48:07.757 に答える