RoR ActiveRecord::Base uniq undefined when trying to uniq.pl



所以我有一个非常简单的模型,叫做电影。 我正在尝试添加一个类方法,该方法返回数据库中分配给电影的评级的整洁列表。 看来我想打电话给Movie.uniq.pluck(:rating)

所以我添加了这样的方法:

class Movie < ActiveRecord::Base
    def self.all_ratings
        self.uniq.pluck(:rating)
    end
end

但它就是行不通。 当它运行时,我得到:undefined method uniq' for #'... 我尝试过包括ActiveRecord::Computing,但这似乎也无济于事。 我还在"def..."之后放了一个断点来检查自己有什么方法,果然,uniq 不在其中......

我显然做错了什么,但我只是不太明白它是什么。

有人有什么想法吗?

ó_ò

uniq是一个Ruby方法,甚至可以用于1.8.7。问题是uniq是一种Array方法。

所以你可能需要打电话给uniq类似 Movie.all.

Uniq是一个数组方法。当你把self.uniq放在self.all_ratings里面时,self指的是Movie类,它不会指向任何集合

所以首先要得到你想要的集合

result = Movie.all
(or)
result = Movie.where({})

然后使用 UNIQ 方法获取结果

最新更新