Rails 中的条件逻辑问题:实例方法不返回预期值

Problem with conditional logic in Rails: instance method does not return expected value

提问人:FERNANDO MONCAYO 提问时间:7/12/2023 最后编辑:FERNANDO MONCAYO 更新时间:7/12/2023 访问量:33

问:

我正在开发一个允许用户发帖的 Rails 应用程序。如果数据库中的 anon 字段设置为 1,我希望帖子是匿名的。为了实现此功能,我在 Post 模型中添加了一个名为 display_author 的方法,如果 anon 为 0,它应该返回用户名,如果 anon 为 1,则返回字符串“Anon”。

模型

    def display_author
        if anon == 0
            'Anon'
          else
            user.users
          end
    end

观看帖子

<% @posts.each do |post| %>
  <%= post.display_author %>
<% end %>

问题是,即使 anon 为 1,我仍然看到用户名而不是“anon”。我已经多次浏览了我的代码并尝试调试它,但我无法弄清楚为什么它没有按预期工作。

问题是,即使 anon 为 1,我仍然看到用户名而不是“anon”。我已经多次浏览了我的代码并尝试调试它,但我无法弄清楚为什么它没有按预期工作。

Ruby-on-Rails 红宝石 Ruby-on-Rails-5

评论

0赞 Amol Mohite 7/12/2023
根据问题,如果 anon 为 0,代码应返回用户名,如果 anon 为 1,则返回字符串“Anon”,但根据代码if anon == 0 then 'Anon'
0赞 FERNANDO MONCAYO 7/12/2023
如果是 1 或 0,则无法解析,没关系
0赞 Amol Mohite 7/12/2023
只需在控制台中打印值并检查或使用anonself.anon
0赞 FERNANDO MONCAYO 7/12/2023
我已经使用了“自我”,但现在问题是匿名,不管它是 0 还是 1
1赞 FERNANDO MONCAYO 7/12/2023
@spickermann 问题出在数据库上,我改成了布尔值,它就可以工作了

答:

-1赞 kwerle 7/12/2023 #1

第一步:选择一个测试框架。

说真的,你的代码有一个基本问题。你需要测试。

一旦你有一个测试框架和一个失败的基本测试,在前面添加一个调试行,找出anon到底是什么(提示,它不是0)。if anon == 0

然后进入 anon 方法,看看发生了什么。