如果条件在rails中失败,则返回false

时间:2017-08-11 02:38:50

标签: ruby-on-rails-4

我想知道是否有更好的方法在rails中编写这段代码。

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

1 个答案:

答案 0 :(得分:0)

更为惯用的写作方式如下:

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,这比在大多数时间传递id更好。此外,按照惯例,如果您想要“无”或“无效”,最好返回nil而不是false

要采用这段代码,您还需要为名为User的{​​{1}}实现一个实例方法,该方法与您之前的admin?方法基本相同。这使得您的代码更加面向对象,这是Ruby中更受欢迎的样式。