我正在关注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
更新的答案与进一步的解释 –