3

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

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

class Movie < ActiveRecord::Base

    def self.all_ratings
        self.uniq.pluck(:rating)
    end

end

但它只是不起作用。当它运行时,我得到:undefined methoduniq' for #`... 我试过包括 ActiveRecord::Calculations 但这似乎也无济于事。我还在'def ...'之后设置了一个断点来检查self有哪些方法,果然,uniq不在其中......

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

有人有想法么?

ó_ò
4

2 回答 2

2

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

因此,您可能需要调用uniq类似Movie.all.

于 2012-08-09T03:54:51.287 回答
0

uniq 是一个数组方法。当你放入时self.uniqself.all_ratingsself 指的是 Movie 类,它不会指向任何集合

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

result = Movie.all

(or)

result = Movie.where({})

然后对结果使用 uniq 方法

于 2012-08-09T06:37:41.000 回答