Rails - .where方法不起作用

时间:2013-11-20 17:42:40

标签: ruby-on-rails ruby model-view-controller ruby-on-rails-4 where-clause

我的顶部导航菜单中有以下代码:

<% if current_user.relationships.where(state: 'active') %>
    <li><%= link_to 'New Schedule', new_schedule_path %></li>
<% end %>

用户有很多关系。 'state'是关系表中的一列。我只希望在用户具有将state列的值设置为“active”的关系时出现链接。出于某种原因,此链接出现在与state = active无关的用户身上。我该如何解决这个问题?

2 个答案:

答案 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。