簡體   English   中英

Rails印象派瑰寶-缺少表“ impressions”的FROM子句條目

[英]Rails impressionist gem - missing FROM-clause entry for table “impressions”

我正在使用Rails 4.2,並設置了印象派 gem,它可以很好地記錄頁面印象。

我正在嘗試做與此Stackoverflow帖子中完全相同的事情,但是答案不起作用。 我試過了:

start_time = 30.days.ago
@mostReadAlbums30Days = Album.joins(:impressions).where("impressions.created_at<='#{Time.now}' and impressions.created_at >= '#{start_time}'").group("impressions.impressionable_id").order("count(impression‌​s.id) DESC")

這將產生以下SQL和錯誤消息

PG :: UndefinedTable:錯誤:缺少表“ impression‌s”的FROM子句條目LINE 1:... BY impressions.impressionable_id ORDER BY count(impression ...

^:選擇“相冊”。*從“相冊”內聯接“印象”到“印象”。“ impressionable_id” =“相冊”。“ id”和“印象”。“ impressionable_type” = $ 1哪里(impressions.created_at <= '2015-01-02 00:50:18 -0200'和impressions.created_at> ='2014-12-03 02:50:18 UTC')GROUP BY impressions.impressionable_id ORDER BY count(impression‌s.id)DESC

我正在使用Postgresql v9.3.5.2。 我怎樣才能使該查詢工作?

主要問題(每條評論):

您的查詢中有一個細微的錯字。 它在ORDER BY count(impression‌s.id)的n和s之間包含一個Unicode字符零寬度空格(U + 200B ORDER BY count(impression‌s.id) 看看在錯誤消息的呈現中impressions如何斷行,否則是不會發生的。


GROUP BY問題:由於查詢選擇了albums.* ,因此它必須使用GROUP BY albums.id而不是GROUP BY impressions.impressionable_id (假設albums.id是主鍵)。 這在數值上是等效的,因為無論如何這些表都是通過這兩個字段進行等價聯接的,但是看起來,在這種情況下,SQL引擎本身無法確定這種等效性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM