You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rails 5.0.0中查询当前用户发布的所有讨论帖子?

获取当前用户发布的所有帖子(Rails 5.0.0)

嘿,我来帮你搞定这个查询需求!首先咱们得确保模型之间的关联已经正确设置,这是Rails中关联查询的基础,之后获取当前用户的帖子就非常简单了。

1. 确认模型关联

首先在你的User模型里添加一对多关联:

# app/models/user.rb
class User < ApplicationRecord
  has_many :discussions, dependent: :destroy # dependent: :destroy是可选配置,用于删除用户时同步删除其帖子
end

然后在Discussion模型里对应设置反向关联:

# app/models/discussion.rb
class Discussion < ApplicationRecord
  belongs_to :user
end

这样Rails就能识别用户和帖子之间的关联关系啦。

2. 查询当前用户的帖子

假设你用了类似Devise的认证系统,已经有current_user全局变量来表示当前登录的用户,那直接用下面的代码就能获取该用户发布的所有帖子:

# 获取当前用户的全部帖子
current_user.discussions

如果需要按创建时间倒序(最新帖子在前)排列,只需追加排序条件:

current_user.discussions.order(created_at: :desc)

3. 控制器与视图使用示例

比如在DiscussionsController的index动作里,你可以这样传递数据到视图:

# app/controllers/discussions_controller.rb
def index
  @discussions = current_user.discussions.order(created_at: :desc)
end

然后在视图里遍历展示帖子内容:

# app/views/discussions/index.html.erb
<% @discussions.each do |discussion| %>
  <div class="discussion-card">
    <h3><%= discussion.title %></h3>
    <p><%= truncate(discussion.content, length: 100) %></p>
    <small>发布于: <%= discussion.created_at.strftime("%Y-%m-%d %H:%M") %></small>
  </div>
<% end %>

这样就能完美展示当前用户自己发布的所有帖子啦!

内容的提问来源于stack exchange,提问作者Nat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:22:59