簡體   English   中英

Rails-計算布爾值為true的實例

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

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