如何在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
相关产品推荐
相关产品推荐

