0

我在頂部導航菜單下面的代碼:導軌 - 。凡方法不僅工作

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

用戶have_many關係。 '狀態'是關係表中的一列。如果用戶有狀態列的值設置爲「有效」的關係,我只希望鏈接出現。出於某種原因,此鏈接顯示給與state = active沒有關係的用戶。我該如何解決?

回答

2

您應將其更改爲

current_user.relationships.where(state: 'active').exists? 

current_user.relationships.where(state: 'active').first 

current_user.relationships.where(state: 'active')將返回一個ActiveRelation對象,它不是在Ruby的結果爲假。只有falsenil

+0

不是我寫的代碼檢查是否存在? – Philip7899

+0

@ Philip7899不,它只是返回一個ActiveRelation對象。在你調用對象上的「exist?」或「first」或「each」之前,沒有'SQL'查詢發生,懶! :) – Santhosh

+0

太好了,謝謝! – Philip7899

0

用途:

current_user.relationships.where(state: 'active').any? 

因爲即使沒有關係,Where方法仍然會返回一個空數組,這是不爲零。