在Rails中获取基于字符串的枚举的“max”

时间:2015-12-31 16:05:56

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个role adminregular .max_by { |x| x.admin? ? 1 : 0 }的对象集合,并想要获得最宽松的对象。该用例用于在一组团队中查找用户对其团队成员资格的最高权限。

我可以像aggregation query那样做一些hacky。

是否有更传统的方法来处理这种性质的东西?

1 个答案:

答案 0 :(得分:1)

如果您将字符串或符号作为某些属性的值,则意味着它们在性质上不具有可比性。如果您对值之间存在比较概念,那么您应该首先将该属性设计为采用整数值。可以在诸如影响OS的安全级别的命令之类的位置看到为可比较属性提供整数值。在您的情况下,管理员1,常规0。如果要提供输出,则应在视图相关逻辑中将1与admin和0关联到常规。