[英]Rails - counting instances where boolean is true
我正在嘗試使用Rails 4制作一個應用程序。
我有一個項目模型和一個項目邀請模型。
Projects has many project invitations
Project invitations belong to projects
在我的項目展示中,我試圖計算已發送的邀請數和已接受的邀請數。
第一部分工作正常。 對於接受,我在project_invitation表中有一個稱為:student_accepted的屬性。 如果是這樣,我想計算一下記錄。
<%= @project.project_invitations.size %>
<% if @project.project_invitations.student_accepted == true %>
<%= @project.project_invitations.size %>
<% else %>
'No'
<% end %>
它給出了這個錯誤:
undefined method `student_accepted' for #<ActiveRecord::Associations::CollectionProxy []>
我也嘗試過:
<% if project.project_invitations.student_accepted == true %>
<%= project.project_invitations.size %>
它給出了這個錯誤:
undefined local variable or method `project' for #<#<Class:0x007fc01d9dcbe8>:0x007fc01de04248>
我正在努力了解如何通過關聯的模型引用屬性。 我讀過幾本書,但它們都具有背景知識。 我已經在相關問題上提供了有用的意見(如下),但仍然沒有掌握這個概念。
http://stackoverflow.com/questions/32916133/rails-how-to-show-attribute-of-an-associated-model
http://stackoverflow.com/questions/32898541/rails-how-to-show-attributes-from-a-parent-object
誰能看到我做錯了什么?
您可以找到學生接受的邀請數量:
@project.project_invitations.where(student_accepted: true).count
Rails的Active Record查詢界面指南解釋了它是如何工作的。
您收到undefined method 'student_accepted' for #<ActiveRecord::Associations::CollectionProxy []>
錯誤的undefined method 'student_accepted' for #<ActiveRecord::Associations::CollectionProxy []>
的原因是,您在ActiveRecord::Associations::CollectionProxy
上調用了student_accepted
,這是Rails創建的用於定義集合的對象記錄。
如果要遍歷該集合,可以執行以下操作:
<% @project.project_invitations.each do |invitation| %>
# here you can call `invitation.student_accepted`
<% end %>
這是必需的,因為一個項目有很多邀請。
@project.project_invitations
為您提供了一個數組,並且Array類沒有方法student_accepted
(而數組中的每個項目都具有此方法)。
您可以使用@project.project_invitations.select{|item| item.student_accepted == true}.present?
@project.project_invitations.select{|item| item.student_accepted == true}.present?
作為條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.