ruby-on-rails - 如何在 Ruby 中将以下代码缩减为一行?

标签 ruby-on-rails ruby ruby-on-rails-3

如何在 Ruby 中将以下代码缩减为一行?

unless(current_facebook_user.nil?)
    unless(current_facebook_user.client.nil?)
        unless(current_facebook_user.client.default_params.nil?)
            val = current_facebook_user.client.default_params
        end
    end
end

最佳答案

您可以使用自Rails 2.3.2 以来引入的active_support/core_ext/object/try.rb 中的try() 方法

val = current_facebook_user.try(:client).try(:default_params)

Method Try

或者直接使用自Ruby 2.3.0以来引入的安全导航运算符

val = current_facebook_user&.client&.default_params

已记录 here

more on Safe navigation operator

关于ruby-on-rails - 如何在 Ruby 中将以下代码缩减为一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6437883/

相关文章:

ruby-on-rails - Arel 聚合、计数、外部连接?

eclipse - Aptana + GVIM => 在 Aptana 中集成类似 vi 编辑器的功能

ruby-on-rails - #<Rails::Railtie::Configuration:0x000000056ac200> 的未定义方法 `assets'

ruby-on-rails - 用 cucumber 和 pickle 记录 id [Rails]

ruby-on-rails - 处理 BigDecimal 尾随零的 Ruby

ruby-on-rails - Heroku 错误代码=H27 desc ="Client Request Interrupted"方法=POST USING RAILS 服务器端,Vue 前端

ruby-on-rails - 如何返回到达特定日期时间之前的天数和小时数?

ruby - 使用 Ruby Watir,如何选择 ID 不断变化的复选框?

ruby-on-rails - 如何在 Rails 中将数组对象转换为散列

ruby-on-rails - Rails NoMethodError : undefined method `includes' for #<User:0x007f62dbbe62f8>