Ruby方法&x27;试试';有两个条件

Ruby方法&x27;试试';有两个条件,ruby,Ruby,我应该检查我的用户是否存在,以及该用户是组织者还是管理员。在我的用户表中,这两列是布尔值。我该怎么处理呢?此代码工作不正确: <% if current_user.try(:organizer?, :admin?) %> 我会用 <% if current_user.try(:organizer?) || current_user.try(:admin?) %> 然后用它。当然,这种方法的可行性取决于需要检查的不同角色和组合的数量 还:如果您经常需要检查用户的存在(

我应该检查我的用户是否存在,以及该用户是组织者还是管理员。在我的用户表中,这两列是布尔值。我该怎么处理呢?此代码工作不正确:

 <% if current_user.try(:organizer?, :admin?) %>
我会用

<% if current_user.try(:organizer?) || current_user.try(:admin?) %>
然后用它。当然,这种方法的可行性取决于需要检查的不同角色和组合的数量

还:如果您经常需要检查用户的存在(您实际上需要<代码>尝试),那么您可以考虑使用NIL对象模式。

其中,
Guest
将是一个对所有这些权限检查作出响应的对象

还有一些准则:

  • 您应该更喜欢
    试试
    over
    try
    如果您使用的是ruby 2.4+,那么应该使用安全导航,而不是
    try()
  • 你应该更喜欢
    |
    而不是
    ()

如果你想了解以上建议的更多原因,可以查看stackoverflow或google

我的意思是什么是
当前用户
?什么是“尝试”
?你说的“纯粹地处理它”是什么意思?@sawa:我想他们的意思是“干净/整洁”。在某些语言中,这些都是我在gem Devision中使用的同一个词(例如俄语),因此请尝试识别用户是否存在,并检查用户管理员或组织者。对不起,英语不好“你可以检查stackoverflow或google”-也许可以为搜索推荐一些关键词?否则,这是一个没用的建议@SergioTulentsev可以随意对我的答案进行编辑。由于这两项建议的主题与最初提出的不同,我不想详细说明。我相信人们会自己做一些工作,然后带着剩余的问题回来。@SergioTulentsev给你go@pascalbetz:好多了!
<% if current_user.try(:organizer?) || current_user.try(:admin?) %>
def admin_or_operator?
  admin? || operator?
end
def current_user
  find_actual_user || Guest.new
end