1
我有幾個型號:Provider
,Casino
,Rating
和Casino_provider
建立一個查詢,這將顯示模型方法結果
Provider.rb:
class Provider < ApplicationRecord
has_many :casino_providers
has_many :casinos, through: :casino_providers
end
Casino.rb:
class Casino < ApplicationRecord
has_many :ratings, dependent: :destroy
has_many :casino_providers
has_many :providers, through: :casino_providers
def average_rating
if ratings.count == 0
ratings.sum(:score).to_f/1
else
ratings.sum(:score).to_f/ratings.count
end
end
end
Rating.rb:
class Rating < ApplicationRecord
belongs_to :casino
end
Casino_provider.rb:
class CasinoProvider < ApplicationRecord
belongs_to :casino
belongs_to :provider
end
我現在要做的,是顯示賭場,屬於最高平均收視提供商。我試圖做到不行。像這樣在軌控制檯:
provider = Provider.all[1] #This is the provider, that has a casino in db
provider.casinos.where(casinos: {average_rating: :asc}) #Gives me an error: 'ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column casinos.average_rating does not exist'
由於average_rating
是不是在賭場表中的列,我怎麼能在查詢中使用這種方法嗎?提前致謝。
不起作用,給我同樣的錯誤。我只在rails控制檯中執行'provider = Provider.all [1]',當然,在最終版本中,它將會失敗。像這樣:<%Provider.all.each do | provider | %><%= provider.casinos.and_so_on%><% end %>' –
'列casinos.average_rating不存在'錯誤提示average_rating不存在於賭場表中。你能否正確地檢查欄目名稱? –
'average_rating'是賭場模式中的一種方法,它不會作爲數據庫表中的列出現。 –