所以我有一个非常简单的模型,叫做电影。 我正在尝试添加一个类方法,该方法返回数据库中分配给电影的评级的整洁列表。 看来我想打电话给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 方法获取结果