SELECT DISTINCT的PG错误,ORDER BY表达式在尝试在Heroku上查看时必须出现在选择列表中

Huy*_*Huy 17 postgresql ruby-on-rails heroku acts-as-taggable-on ruby-on-rails-3

在我为项目添加更多关系后,我收到此跟随错误.在localhost上,页面显示完全正常.但是,在尝试在heroku上查看时出现错误.

ActiveRecord::StatementInvalid (PG::Error: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list
Run Code Online (Sandbox Code Playgroud)

这是我的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
Run Code Online (Sandbox Code Playgroud)

traveldeal/show.html

<% unless @eventdeals.blank? %>

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

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

<% end %>
Run Code Online (Sandbox Code Playgroud)

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()):

这段代码正在运行,所以我只显示了3个随机的eventdeals,它们匹配location(通过act-as-taggable-on)和traveldeal.

但是,在我添加了一个关系(与eventdeals相关但不是traveldeals)后,我开始得到pg错误.

以下是添加的关系:

trip.rb

class Trip < ActiveRecord::Base
  has_many :eventdealtrips, :dependent => :destroy
  has_many :eventdeals, :through => :eventdealtrips
end
Run Code Online (Sandbox Code Playgroud)

eventdeal.rb

class Eventdeal < ActiveRecord::Base
  has_many :eventdealtrips
  has_many :trips, :through => :eventdealtrips, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)

eventdealtrip.rb

class Eventdealtrip < ActiveRecord::Base
  belongs_to :eventdeal
  belongs_to :trip
end
Run Code Online (Sandbox Code Playgroud)

关于如何获得3个eventdeals的随机数组的任何建议?

谢谢.

bou*_*uby 2

我遇到了这个问题,并通过order在菊花链的末端运行来解决它。