1

在我的 html.erb 文件中:

<% @user.relationships.each do |relationship| %>
  <% if relationship.status == "requested" %>
    <p>You have friend requests from: </p> 
    <%= User.find(relationship.followed_id).name %>

问题是我只想显示

您有来自以下的好友请求:

如果有任何匹配项,则一次,而目前它为每次状态 ==“请求”。

4

2 回答 2

2

由于您似乎加载了所有对象,因此让我们在 ruby​​ 中执行此操作,否则应使用范围来完成。

在您的模型中:

def requested?
  status == 'requested'
end

在您的控制器中:

@relationships = @user.relationships.includes(:followed)
@requested_relationships = @relationships.select &:requested?

在您看来:

<% if @requested_relationships.any? %>
  <p>You have friend requests from: </p> 
    <% @requested_relationships.each do |relationship| %>
       <%= relationship.followed.name %>

编辑以防止 n+1 查询

于 2013-10-06T06:19:18.853 回答
1

我会建议这样的事情:

<% requested = @user.relationships.where(status: 'requested') %>
<% if requested.any? %>
  <p>You have friend requests from: </p> 
  <% requested.each do |relationship| %>
    <%= User.find(relationship.followed_id).name %>
于 2013-10-06T06:17:23.050 回答