我正在關注Ruby on Rails教程Michael Hartl。我已經到了第9章。有些代碼我不明白。請參閱下面的第4行,爲什麼我們需要在current_user?(user)
之前需要!
來製作它!current_user?(user)
我們不需要true && true
if語句通過,所以Admin可以看到刪除操作。Ruby on Rails教程Michael Hartl第9章(代碼9.43)
如果用戶登錄並且是管理員,則current_user.admin? == true
,current_user?(user) = true
和!current_user?(user)
將爲false,if語句將不會通過。
_user.html.erb
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to "delete", user, method: :delete,data: { confirm: "You sure?" } %>
<% end %>
</li>
sessions_helper.rb
def current_user=(user)
@current_user = user
end
def current_user
remember_token = User.encrypt(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
def current_user?(user)
user == current_user
end
在此先感謝。
你能解釋一下這個代碼如果是current_user.admin,那麼'<%? &&!current_user?(user)%>'=只有管理員可以刪除用戶,他們不能刪除自己。謝謝 – Jimmy
cos'true && true => true'和'true && false => false',如果管理員看到'true && false',管理員如何看到刪除操作? – Jimmy
更新的答案與進一步的解釋 –