簡體   English   中英

Ruby on Rails-PG錯誤

[英]Ruby on Rails - PG Error

通過Heroku托管在Rails 4上。 我已經閱讀了一些有關此問題的主題,但需要自己澄清。 相關型號:

投稿方式:

  belongs_to :category
  belongs_to :user
  belongs_to :organization
  belongs_to :division

在提交的索引頁面中,我列出了用戶提交的所有提交, :contest_year屬性以及提交所屬的:organization_id屬性分組。

提交控制器:

def index
  @paginate = current_user.submissions.group([:organization_id, 
  :contest_year]).includes(:organization).page(params[:page]).per(3).order('contest_year DESC')
end

(此索引頁面具有Kaminari的分頁功能)

索引視圖:

<% @paginate.each do |contest| %>
  <div class="submissionheading"><h2><%= contest.contest_year %>: <%= contest.organization.name %></h2></div>
  <% current_user.submissions.includes(:submission_details, :user, category: :award).order('created_at DESC').where(organization_id: contest.organization_id, contest_year: contest.contest_year).in_groups_of(3, false) do |group| %>
    <div class="row">
    <% group.each do |submission| %>
      <div class="col-md-4">
        <p class="bold"><%= submission.category.award.name %> <%= submission.category.code %>: <%= submission.category.name %></p>
        <p>Submitted By: <%= submission.user.first_name %> <%= submission.user.last_name %></p>
      </div>
    <% end %>
  </div><br/>
  <% end %>
<% end %>

<p><%= paginate @paginate %></p>

我收到此錯誤:

PG::Error: ERROR:  column "submissions.id" must appear in the GROUP BY clause or be used in an aggregate function

如果我將:id屬性插入上述控制器代碼的組部分中,則它將為每個提交重復提交信息。 這是一個例子:

它應該正常做什么(在組部分中沒有:id ):

在此處輸入圖片說明

一旦在組部分中插入:id ,它會做什么:

在此處輸入圖片說明

對於每個提交,它都會進行迭代,而對於具有相同組織/年份的三個提交,不僅會重復一次。 基本上,我不想將:id添加到分組中,但是PG拋出此錯誤! 如何重新編寫我的控制器代碼,以便PG在保持正確分組的同時接受它? 謝謝!

select('DISTINCT(submissions.id), submissions.*')到模型查找器或將uniq到模型查找器:

def index
  @paginate = current_user.submissions.uniq.group([:id, :organization_id, 
  :contest_year]).includes(:organization).page(params[:page]).per(3).order('contest_year DESC')
end

更新:

問題出在您的視圖代碼中。 您正在遍歷@paginate集合,然后在其中再次調用current_user.submissions 不知道您在這里做什么,但是可能通過in_groups_of(3)調用使所有內容in_groups_of(3) 檢查您的@paginate集合確實是唯一的,然后調試視圖代碼。

暫無
暫無

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

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