未定义的方法“平均”
Undefined method `average'
我正在尝试使用 raty.js 在我的 rails 应用中计算电影对象的平均星级。这是我的代码片段:
controllers/movies_controller.rb
def show
@avg_review = @movie.average(:rating)
end
private
def set_movie
@movie = Movie.find(params[:id])
end
schema.rb
create_table "movies", force: true do |t|
t.integer "user_id"
t.string "title"
t.text "description"
t.integer "image_id"
t.string "director"
t.float "rating"
t.integer "num_ratings"
t.datetime "created_at"
t.datetime "updated_at"
t.text "url"
t.string "tracking"
end
我一直收到错误消息:
undefined method `average' for #<.Movie:0x5b385d0>
据我了解,这是 rails 中的 a predefined method。然而,我收到了错误。有人可以帮助我吗?
根据您引用的文档,average
是要在 Movie
模型本身上调用,而不是它的一个实例。
这将 return 列的平均值。
@avg_review = Movie.average(:rating)
也可以在查询中添加条件(为了演示,我特意编了一列):
# Get average of movie ratings from 2015
@avg_review = Movie.average(:rating).where(year: '2015')
根据 average
方法文档。这是 ActiveRecord::Calculations
的一种方法,因此您应该直接在 ActiveRecord
集合或模型上使用它,但您试图在实例上使用它:
错误:
@avg_review = @movie.average(:rating)
右:
@avg_review = Movie.average(:rating)
我正在尝试使用 raty.js 在我的 rails 应用中计算电影对象的平均星级。这是我的代码片段:
controllers/movies_controller.rb
def show
@avg_review = @movie.average(:rating)
end
private
def set_movie
@movie = Movie.find(params[:id])
end
schema.rb
create_table "movies", force: true do |t|
t.integer "user_id"
t.string "title"
t.text "description"
t.integer "image_id"
t.string "director"
t.float "rating"
t.integer "num_ratings"
t.datetime "created_at"
t.datetime "updated_at"
t.text "url"
t.string "tracking"
end
我一直收到错误消息:
undefined method `average' for #<.Movie:0x5b385d0>
据我了解,这是 rails 中的 a predefined method。然而,我收到了错误。有人可以帮助我吗?
根据您引用的文档,average
是要在 Movie
模型本身上调用,而不是它的一个实例。
这将 return 列的平均值。
@avg_review = Movie.average(:rating)
也可以在查询中添加条件(为了演示,我特意编了一列):
# Get average of movie ratings from 2015
@avg_review = Movie.average(:rating).where(year: '2015')
根据 average
方法文档。这是 ActiveRecord::Calculations
的一种方法,因此您应该直接在 ActiveRecord
集合或模型上使用它,但您试图在实例上使用它:
错误:
@avg_review = @movie.average(:rating)
右:
@avg_review = Movie.average(:rating)