我正在為模型構建一個范圍以在集合中呈現某種隨機性:
scope :biased_random, -> (value) {
self.select("*, RANDOM() * (to_char(created_at, 'YYYYMMDD')::float / to_char(now(), 'YYYYMMDD')::float) AS randomable_int").order(randomable_int: :desc)
}
我對結果感到滿意,但我得到了PG::AmbiguousColumn: ERROR:
"PG::AmbiguousColumn: ERROR: column reference \"created_at\" is ambiguous\nLINE 1: SELECT *, RANDOM() * (to_char(created_at, 'YYYYMMDD')::float...\n ^\n"
所以我試圖指定模型名稱,因為它不應該再模棱兩可了:
self.select("*, RANDOM() * (to_char(#{self.model.to_s.downcase}.created_at, 'YYYYMMDD')::float / to_char(now(), 'YYYYMMDD')::float) AS randomable_int").order(randomable_int: :desc)
現在我收到另一個 PG 錯誤:
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near "model name")
(“模型名稱”顯然是我的模型)
我不明白為什么它首先是模棱兩可的,然后為什么當我指定它時,我又遇到了另一個錯誤。
uj5u.com熱心網友回復:
該PG::AmbiguousColumn錯誤很可能是因為您的查詢連接了多個表。您需要created_at使用表的名稱而不是模型的名稱作為前綴 - https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-table_name在這里可能會有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439765.html
標籤:轨道上的红宝石 红宝石 PostgreSQL
上一篇:由于hsqldb無法與JAva8TimeAPI一起使用,如何將組態檔從HSQLDB更改為POSTGRES?
下一篇:如何使用.sql腳本遷移資料?
