15

後,我加入到我的項目,更關係我得到這個跟隨誤差時,必須出現在選擇列表中。在本地主機上,頁面顯示非常好。但是,在嘗試在heroku上查看時出現錯誤。PG錯誤SELECT DISTINCT,ORDER BY表達式試圖查看在Heroku

ActiveRecord::StatementInvalid (PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 

這裏是我的traveldeal控制器:

def show 
    @traveldeal = @commentable = Traveldeal.find(params[:id]) 
    @comments = Comment.all 
    @title = @traveldeal.title 
    @eventdeals = Eventdeal.tagged_with(@traveldeal.location_tag_list, :any => true, :order => 'RANDOM()', :limit => 3) 
    end 

traveldeal/show.html

<% unless @eventdeals.blank? %> 

    <h1>Events in the area:</h1> 

    <% @eventdeals.each do |eventdeal| %> 
    <%= link_to eventdeal do %> 
     <!-- content --> 
    <% end %> 
    <% end %> 

<% end %> 

Heroku的日誌

SELECT DISTINCT eventdeals.* FROM "eventdeals" JOIN taggings event_taggings_e9f0e2e ON event_taggings_e9f0e2e.taggable_id = eventdeals.id AND event_taggings_e9f0e2e.taggable_type = 'Eventdeal' WHERE (event_taggings_e9f0e2e.tag_id = 1 OR event_taggings_e9f0e2e.tag_id = 3 OR event_taggings_e9f0e2e.tag_id = 4 OR event_taggings_e9f0e2e.tag_id = 5) ORDER BY RANDOM()):

此代碼式爲W工作會有這樣我只顯示匹配位置(通過動作-AS-可加標籤上)配有一個traveldeal 3個隨機eventdeals。

然而,當我加了關係(相關eventdeals但不traveldeals),我開始了第錯誤。

這裏有添加的關係:

trip.rb

class Trip < ActiveRecord::Base 
    has_many :eventdealtrips, :dependent => :destroy 
    has_many :eventdeals, :through => :eventdealtrips 
end 

eventdeal.rb

class Eventdeal < ActiveRecord::Base 
    has_many :eventdealtrips 
    has_many :trips, :through => :eventdealtrips, :dependent => :destroy 
end 

eventdealtrip.rb

class Eventdealtrip < ActiveRecord::Base 
    belongs_to :eventdeal 
    belongs_to :trip 
end 

如何任何意見我可以繼續我得到了3個事件處理的隨機數組?

謝謝。

回答

0

ORDER BY條目應引用到輸出列的問題。 看看導致的sql,那失敗了:情況應該更清楚。

+1

不太清楚,我跟着你。我使用我的heroku日誌中的詳細信息更新了我的帖子。 – Huy

+3

編號就像一個更加明確的答案爲好,林有同樣的問題。我只是想隨機化我的查詢順序。 – rugbert

2

我有這個問題,並在我的菊花鏈的末端運行order解決它。

相關問題