我正在尝试在Mongoid的用户模型中定义一个范围,以获取具有 manager 或 supervisor 角色的用户。
为了实现角色功能,我使用了 rolify gem(https://github.com/RolifyCommunity/rolify)。
根据官方gem文档(https://github.com/RolifyCommunity/rolify#class-level),我正在使用 with_any_role 方法,如下所示:
scope :managers_and_supervisors, -> { with_any_role(:manager, :supervisor) }
但是当在Rails控制台中尝试使用相同的作用域时,我得到了未定义的Array方法“ to_criteria” 错误,如下所示:
1.9.3-p551 :001 > User.managers_and_supervisors
NoMethodError: undefined method `to_criteria' for #<Array:0x0000000e9c3d40>
但是如果我直接尝试在rails控制台中调用 with_any_role 方法,如下所示:
1.9.3-p551 :002 > User.with_any_role(:manager, :supervisor)
它工作正常。
我需要一些建议来更正我的范围定义,以获取具有 manager 或 supervisor 角色的用户。
答案 0 :(得分:0)
尝试升级您的红宝石版本。从控制台输出中,您似乎正在运行1.9.3。从他们的github:
Requirements
Rails >= 4.2
ActiveRecord >= 4.2 or Mongoid >= 4.0
supports ruby 2.2+, JRuby 1.6.0+ (in 1.9 mode) and Rubinius 2.0.0dev (in 1.9 mode)
如果您正在使用Rails〜3,您可能还需要升级Rails