ruby - Ruby 中更漂亮的代码

标签 ruby ruby-on-rails-3

这段代码有更漂亮的版本吗?

@available_option_types.delete_if {|ot|
  result = true 
  result = current_user.retailer.id != ot.retailer.id if ot.retailer.present? 
  result
} unless current_user.has_role? 'admin'

谢谢!

最佳答案

@available_option_types.delete_if { |ot|
  ot.retailer.present? ? (current_user.retailer.id != ot.retailer.id) : true
} unless current_user.has_role? 'admin'

或者,如果您将一些逻辑放入模型中,它会更漂亮:

class User
  def same_retailer_with?(option_type)
    option_type.retailer.present? ? (self.retailer.id != option_type.retailer.id) : true
  end
end

@available_option_types.delete_if { |ot| current_user.same_retailer_with?(ot) } unless current_user.has_role? 'admin'

关于ruby - Ruby 中更漂亮的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6586631/

相关文章:

ruby-on-rails - RubyMine 无法识别 Rails 应用程序

ruby-on-rails - 我如何对为什么 Ruby 在我的机器上突然变慢进行基准测试?

ruby-on-rails - 如何将整数变成日期数组?

ruby-on-rails-3 - 在完整的 Rails 引擎中从 lib 文件夹加载路由

ruby-on-rails-3 - 在 FB API 调用中“无法代表该用户调用 API”

ruby-on-rails - Rails,当用户名中存在 @ 符号时,route_path 会中断

ruby-on-rails - 使用错误的型号 ID 进行修补

ruby-on-rails - Rails 中的条件语句

ruby-on-rails-3 - 理解 Rails/PG 解释

ruby-on-rails - 为什么 Foo.first 返回最后一条记录?