[英]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.