ruby - 在 Ruby 中找到第一个可能匹配的哈希键的优雅方式

标签 ruby ruby-on-rails-4 ruby-2.2

假设我的用户输入可以是这样的:

input = { user_id: 5, ... }

或者这个:

input = { app_id: 5, ... }

我想返回 :user_id 或 :app_id,具体取决于所提供的。我可以这样做:

(input.keys & [:user_id, :app_id]).first

是否有更优雅、更像 ruby​​ 的、惯用的方式来做到这一点?

这比上面更好还是更差?:

input.slice(:user_id, :app_id).keys.first

(答案不需要严格来自 Ruby 2.2 stdlib,也欢迎使用 Rails 方法)

最佳答案

我会使用 find 反过来解决它和 has_key? :

[:user_id, :app_id].find { |k| input.has_key?(k) }

关于ruby - 在 Ruby 中找到第一个可能匹配的哈希键的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096753/

相关文章:

ruby-on-rails - 如何使 link_to 和自定义 URL 在 Rails 上协同工作

ruby-on-rails - fields_for 嵌套资源的 Rails 4 Controller 操作

ruby-on-rails-4 - 为什么 better_errors 在 cloud 9 ide 上不起作用?

ruby - 使用数组中的键迭代散列,并对结果求和

ruby-on-rails - 无法转储单例 - cached_resource gem

ruby-on-rails - rake 任务必须每 2 分钟运行一次 Controller 方法

ruby - 为什么 ruby​​ 不允许从类中访问方法,除非以模块名称为前缀

ruby-on-rails - 我怎样才能禁用rails 4详细日志,esp缓存未命中/命中

ruby-on-rails - 我们如何避免 Controller 中方法的重复/重复 - RAILS 3+

Ruby 设计问题