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 ...」の後にブレークポイントを配置して、自分自身が持っているメソッドを調べましたが、確かに、それらの中に uniq はありませんでした...

私は明らかに何か間違ったことをしていますが、それが何であるかはよくわかりません。

誰にもアイデアはありますか?

ó_ò
4

2 に答える 2

2

uniqは Ruby メソッドで、1.8.7 でも使用できます。問題はuniq方法Arrayです。

uniqしたがって、おそらくのようなものを呼び出す必要がありますMovie.all

于 2012-08-09T03:54:51.287 に答える
0

uniq は配列メソッドです。self.uniq内部に入れるとself.all_ratings、 self は Movie クラスを参照し、コレクションを指しません

したがって、最初に必要に応じてコレクションを取得します

result = Movie.all

(or)

result = Movie.where({})

結果に uniq メソッドを使用します

于 2012-08-09T06:37:41.000 に答える