Rails条件逻辑问题:display_author实例方法未返回预期值
问题分析与修复方案
你的代码存在两个关键问题,直接导致了预期功能失效:
1. 逻辑判断完全颠倒
你需求是当anon字段为1时显示"Anon",但当前代码的判断逻辑刚好相反——写的是anon == 0时返回"Anon",这就是为什么anon=1时页面仍显示用户名的核心原因。
2. 关联属性调用错误
user.users是错误的写法:Post模型应该关联了单个User(比如通过belongs_to :user),所以正确的用户名调用应该是user.username(如果你的User表中存储用户名的字段是username,如果是name或其他字段,替换成对应字段名即可)。
修正后的Post模型代码
def display_author if anon == 1 'Anon' else user.username # 替换为你实际的用户名字段,比如user.name end end
调试验证建议(可选)
如果想确认anon字段的实际值,可以在视图中临时添加调试代码:
<% @posts.each do |post| %> <%= "Anon字段值: #{post.anon} | 显示作者: #{post.display_author}" %> <% end %>
这样能直观看到每个帖子的anon值和对应显示结果,方便进一步排查问题。
内容的提问来源于stack exchange,提问作者FERNANDO MONCAYO
相关产品推荐
相关产品推荐

