Mongoid - 使用范围不同

时间:2012-03-19 08:36:22

标签: mongoid distinct

我有以下型号:

class Message
  include Mongoid::Document

  field :tags,        :type => Array

  scope :contained_tags, distinct(:tags)
end

因为distinct语法不是模型的方法,而是Criteria。因此,针对上述模型引发了异常undefined method 'distinct' for Message:Class (NoMethodError)

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

def self.contained_tags
  scoped.distinct(:tags)
end
  1. 完全作为范围
  2. 您甚至可以链接范围;例如:

    Message.only_active.contained_tags

  3. 注意:如果您使用旧版本的mongoid并且“作用域”不适合您,请使用:criteria.distinct(:tags)