Rails - 计算布尔值为真的实例
Rails - counting instances where boolean is true
我正在尝试使用 Rails 4.
制作一个应用程序
我有一个项目模型和一个项目邀请模型。
Projects has many project invitations
Project invitations belong to projects
在我的项目展示中,我正在计算已发送了多少邀请以及已接受了多少邀请。
第一部分工作正常。对于接受,我在我的 project_invitation table 中有一个名为: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>
我很难理解如何通过关联模型引用属性。我读过几本书,但它们都假定有背景知识。我对相关问题(下方)提供了有用的意见,但仍然没有掌握这个概念。
谁能看出我做错了什么?
您可以找到学生接受的邀请数量:
@project.project_invitations.where(student_accepted: true).count
Rails 的 Active Record Query Interface guide 解释了它是如何工作的。
您收到 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
给你一个数组,数组 class 没有方法 student_accepted
(而数组中的每个项目都有这个方法)。
您可以使用@project.project_invitations.select{|item| item.student_accepted == true}.present?
作为条件。
我正在尝试使用 Rails 4.
制作一个应用程序我有一个项目模型和一个项目邀请模型。
Projects has many project invitations
Project invitations belong to projects
在我的项目展示中,我正在计算已发送了多少邀请以及已接受了多少邀请。
第一部分工作正常。对于接受,我在我的 project_invitation table 中有一个名为: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>
我很难理解如何通过关联模型引用属性。我读过几本书,但它们都假定有背景知识。我对相关问题(下方)提供了有用的意见,但仍然没有掌握这个概念。
谁能看出我做错了什么?
您可以找到学生接受的邀请数量:
@project.project_invitations.where(student_accepted: true).count
Rails 的 Active Record Query Interface guide 解释了它是如何工作的。
您收到 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
给你一个数组,数组 class 没有方法 student_accepted
(而数组中的每个项目都有这个方法)。
您可以使用@project.project_invitations.select{|item| item.student_accepted == true}.present?
作为条件。