postgresql 尝试在 Heroku 上查看时,SELECT DISTINCT、ORDER BY 表达式的 PG 错误必须出现在选择列表中
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10423713/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PG error for SELECT DISTINCT, ORDER BY expressions must appear in select list when trying to view on Heroku
提问by Huy
I am getting this follow error after I added more relationships to my project. On localhost, the page displays perfectly fine. However, I get an error when trying to view it on heroku.
在向项目添加更多关系后,出现此跟随错误。在本地主机上,页面显示得很好。但是,尝试在 heroku 上查看时出现错误。
ActiveRecord::StatementInvalid (PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
Here is my traveldeal controller:
这是我的 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
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 logs
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()):
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()):
This code was working so that I only displayed 3 random eventdeals that matched location (through act-as-taggable-on) with a traveldeal.
这段代码有效,所以我只显示了 3 个与位置匹配的随机事件交易(通过作为可标记的行为)与旅行交易。
However, after I added a relationship (related to eventdeals but not traveldeals), I started getting the pg error.
但是,在我添加了关系(与 eventdeals 相关但与 traveldeals 无关)后,我开始收到 pg 错误。
Here are the relationships that was added:
以下是添加的关系:
trip.rb
旅行.rb
class Trip < ActiveRecord::Base
has_many :eventdealtrips, :dependent => :destroy
has_many :eventdeals, :through => :eventdealtrips
end
eventdeal.rb
eventdeal.rb
class Eventdeal < ActiveRecord::Base
has_many :eventdealtrips
has_many :trips, :through => :eventdealtrips, :dependent => :destroy
end
eventdealtrip.rb
eventdealtrip.rb
class Eventdealtrip < ActiveRecord::Base
belongs_to :eventdeal
belongs_to :trip
end
Any advice on how I can still get a random array of 3 eventdeals?
关于如何仍然获得 3 个 eventdeals 的随机数组的任何建议?
Thanks.
谢谢。
回答by boulder_ruby
I had this issue and solved it by running order
at the end of my daisy chain.
我遇到了这个问题并通过order
在菊花链末端运行来解决它。