ですから、これはエラーを実行するための最も慣用的な方法だと思うので、これを実行したいと思います。
例えば:
User < ActiveRecord::Base
def add_email?
...
#in the case that it does have an error
MyErrorObjectThatEvaluatesToFalse.new("The email is already taken")
end
def is_valid_user?
...
MyErrorObjectThatEvaluatesToFalse.new("Username is not set")
...
end
end
...
SomeController
...
if error = user.add_email?
render_error_msg(error.message) and return
elsif error = user.is_valid_user?
render_error_msg(error.message) and return
end
...
end
以下の解決策の1つを試しましたが、必要な機能がありません。
class A
def ==(comp)
false
end
end
a = A.new
if a
puts "'a' evaluated to true"
else
puts "'a' evaluated to false"
end
#=> 'a' evaluated to true
このようなことを行う方法はありますか、またはuser.validの組み合わせで間接的にメッセージを取得する現在のレールの方法よりも優れたエラーを処理する方法を他の誰かが見つけましたか?とuser.errors?
ありがとう!