コントローラーには、このファインダーがあります
User.findByEmail('test@test.com')
そして動作します。
書いても動く
User.findByEmail(null)
しかし、私が書くなら
User.findByEmail(session.email)
session.email が定義されていない (ergo が null) 場合、例外がスローされます
groovy.lang.MissingMethodException: No signature of method: myapp.User.findByEmail() is applicable for argument types: () values: []
この振る舞いは正しいですか?
「session.email」を評価するとnullになるので、 User.findByEmail(null) と書いたときと同じように動作するはずだと思います
さらに奇妙な……。
このコードを Groovy コンソールで実行すると、次のようになります。
import myapp.User
User.findByEmail(null)
メールがnullのユーザーを返しますが、同じコードを2回実行すると返されます
groovy.lang.MissingMethodException: No signature of method: myapp.User.findByEmail() is applicable for argument types: () values: []