Ruby:为什么第三个条件语句不为真?

姆巴萨丁加

有人可以帮我吗?对于下面的条件语句,只满足第一个和第二个条件,永远不满足第三个(第二个 elsif 语句)和最后一个条件。我试过移动用例语句,但我得到了相同的结果。

def current_user
  if Stylist.exists?(session[:user_id]) && Stylist.find(session[:user_id]).has_role?(:def_stylist)
    @current_user = Stylist.find(session[:user_id])
  elsif Client.exists?(session[:user_id]) && Client.find(session[:user_id]).has_role?(:def_client)
    @current_user = Client.find(session[:user_id])
  elsif Admin.exists?(session[:user_id]) && Admin.find(session[:user_id]).has_role?(:def_admin)
    @current_user = Admin.find(session[:user_id])
  else
    @current_user = nil
  end
end
马尼什

只有当我们找不到造型师、客户或管理员时,才会满足最后一个条件。我认为问题在于代码,假设您的管理员用户 ID 为 1,并且 1 是具有 def_client 角色的客户端 ID,因此当管理员登录时,我们会检查Client表中是否存在 ID 1并找到客户端。您应该为不同的角色设置不同的会话。我认为在更改会话密钥后这会起作用。

def current_user
  @current_user =
    if session[:stylist_user_id] && Stylist.find(session[:stylist_user_id]).has_role?(:def_stylist)
      Stylist.find(session[:stylist_user_id])
    elsif Client.exists?(session[:client_user_id]) && Client.find(session[:client_user_id]).has_role?(:def_client)
      Client.find(session[:client_user_id])
    elsif Admin.exists?(session[:admin_user_id]) && Admin.find(session[:admin_user_id]).has_role?(:def_admin)
      Admin.find(session[:admin_user_id])
    end
end

更新:您可以通过更改代码进一步减少查询。请记住,存在会触发查询,然后您检查角色,这些角色再次在造型师、客户或管理员上创建查询,然后我们找到了可以通过将代码更改为如下内容来减少的查询。

def current_user
  @current_user =
    if session[:stylist_user_id]
      stylist = Stylist.find(session[:stylist_user_id])
      stylist if stylist.has_role?(:def_stylist)
    elsif session[:client_user_id]
      client = Client.find(session[:client_user_id])
      client if client.has_role?(:def_client)
    elsif session[:admin_user_id]
      admin = Admin.find(session[:admin_user_id])
      admin if admin.has_role?(:def_admin)
    end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的第三个条件在搜索中不起作用?

来自分类Dev

三元内联语句不适用于第三个条件?

来自分类Dev

Visual Studio逃脱了Linq语句的第三个条件

来自分类Dev

为什么这第三个div影响其他两个div?

来自分类Dev

如何执行第三个 elif 条件?

来自分类Dev

为什么GUID中的第三个数据以4开头?

来自分类Dev

为什么ioctl调用的原型使用unsigned long作为第三个参数?

来自分类Dev

为什么在添加第三个对象时array.reduce返回NaN

来自分类Dev

为什么ioctl调用的原型使用unsigned long作为第三个参数?

来自分类Dev

为什么在getopts bash中不解析第三个参数

来自分类Dev

为什么此sed命令不能替换倒数第三个“ and”?

来自分类Dev

为什么跳过第三个打印流 println() 命令?

来自分类Dev

为什么 getLoaderManager.initLoader() 第三个参数 = 这是无效的?

来自分类Dev

如果第三个键为真,则比较mongodb文档的两个键

来自分类Dev

替换第三个值

来自分类Dev

为什么两个程序有前向引用错误而第三个程序没有?

来自分类Dev

为什么前两个变量 (a, b) 是预先递增的,而第三个变量不是 (c)?

来自分类Dev

为什么不能在Java的for循环的第三个参数中使用?:运算符?

来自分类Dev

为什么没有第三个变量的交换在这里不起作用?

来自分类Dev

如何仅显示Find语句的第三个匹配项?

来自分类Dev

PHP if else 语句的第三个分支无法正常工作

来自分类Dev

选择具有第一个条件的第三个表 [SQL]

来自分类Dev

连接两个表+第三个表作为条件列

来自分类Dev

按第三个表的条件过滤的两个表的分组计数查询

来自分类Dev

按第三个属性值对 ruby 中的哈希进行排序

来自分类Dev

如何根据第三个参数忽略where子句中的某些条件?

来自分类Dev

如何根据第三个参数忽略where子句中的某些条件?

来自分类Dev

如何向该Excel公式添加第三个条件?

来自分类Dev

如何将第三个条件添加到索引匹配大公式?

Related 相关文章

  1. 1

    为什么我的第三个条件在搜索中不起作用?

  2. 2

    三元内联语句不适用于第三个条件?

  3. 3

    Visual Studio逃脱了Linq语句的第三个条件

  4. 4

    为什么这第三个div影响其他两个div?

  5. 5

    如何执行第三个 elif 条件?

  6. 6

    为什么GUID中的第三个数据以4开头?

  7. 7

    为什么ioctl调用的原型使用unsigned long作为第三个参数?

  8. 8

    为什么在添加第三个对象时array.reduce返回NaN

  9. 9

    为什么ioctl调用的原型使用unsigned long作为第三个参数?

  10. 10

    为什么在getopts bash中不解析第三个参数

  11. 11

    为什么此sed命令不能替换倒数第三个“ and”?

  12. 12

    为什么跳过第三个打印流 println() 命令?

  13. 13

    为什么 getLoaderManager.initLoader() 第三个参数 = 这是无效的?

  14. 14

    如果第三个键为真,则比较mongodb文档的两个键

  15. 15

    替换第三个值

  16. 16

    为什么两个程序有前向引用错误而第三个程序没有?

  17. 17

    为什么前两个变量 (a, b) 是预先递增的,而第三个变量不是 (c)?

  18. 18

    为什么不能在Java的for循环的第三个参数中使用?:运算符?

  19. 19

    为什么没有第三个变量的交换在这里不起作用?

  20. 20

    如何仅显示Find语句的第三个匹配项?

  21. 21

    PHP if else 语句的第三个分支无法正常工作

  22. 22

    选择具有第一个条件的第三个表 [SQL]

  23. 23

    连接两个表+第三个表作为条件列

  24. 24

    按第三个表的条件过滤的两个表的分组计数查询

  25. 25

    按第三个属性值对 ruby 中的哈希进行排序

  26. 26

    如何根据第三个参数忽略where子句中的某些条件?

  27. 27

    如何根据第三个参数忽略where子句中的某些条件?

  28. 28

    如何向该Excel公式添加第三个条件?

  29. 29

    如何将第三个条件添加到索引匹配大公式?

热门标签

归档