如果条件失败,则返回false
问题描述:
我想知道是否有更好的方法在rails中编写这段代码。如果条件失败,则返回false
def self.get_user_id(name)
current_user_id = User.current.id
user_id = User.where("name=?",name).id
admin = check_admin(current_user_id)
if (admin == TRUE || user_id == current_user_id)
istrue = user_id
else
istrue = FALSE
end
return istrue
end
答
你可以改进的东西很少。有价值的命名和返回值。更好的是,如果您可以返回您的成功案例中的特定user_id
,如果不是,则返回nil
。而且你也不需要在函数结尾处明确指出return
。 Ruby有很多编码标准,最好的做法是遵循一个好的编码标准。所以它会坚持你以某种方式宣布和定义事物。
def self.get_user_id(name)
current_user_id = User.current.id
user_id = User.where("name=?",name).id
admin = check_admin(current_user_id)
if (admin == TRUE || user_id == current_user_id)
return user_id
end
nil
end
答
写它的更惯用的方法是这样的:我改变了它返回用户对象,而不是它的id
def self.get_user(name)
current_user = User.current
user = User.where("name = ?", name)
return nil unless user == current_user
return nil unless current_user.admin?
user
end
注意,这是不是围绕通过ID最多时更好。此外,按照惯例,如果您想“无”或“无效”,最好返回nil
而不是false
。
要采用这段代码,还需要为User
实现一个名为admin?
的实例方法,该方法与您以前的check_admin
方法基本相同。这使得你的代码更加面向对象,这在Ruby中是更受欢迎的风格。