所以我想这样做是因为我认为这是最惯用的出错方式。
例如:
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
我尝试了以下解决方案之一,但它没有我想要的功能:
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 的组合间接获取消息的 rails 方法更好?和用户错误?
谢谢!