我的顶部导航菜单中有以下代码:
<% if current_user.relationships.where(state: 'active') %>
<li><%= link_to 'New Schedule', new_schedule_path %></li>
<% end %>
用户有很多关系。 'state'是关系表中的一列。我只希望在用户具有将state列的值设置为“active”的关系时出现链接。出于某种原因,此链接出现在与state = active无关的用户身上。我该如何解决这个问题?
答案 0 :(得分:2)
您应该将其更改为
current_user.relationships.where(state: 'active').exists?
或
current_user.relationships.where(state: 'active').first
current_user.relationships.where(state: 'active')
将返回一个ActiveRelation对象,并且在Ruby中它不会被评估为false。只有nil
的{{1}}
答案 1 :(得分:0)
使用:
current_user.relationships.where(state: 'active').any?
因为即使没有关系,where方法仍将返回一个空数组,这不是nil。