【发布时间】:2015-01-04 21:27:22
【问题描述】:
假设我有这个关联
User have_many posts
Post belongs_to user
User Post
----------------
id id
name title
user_id
如何仅列出包含/加入的帖子标题和用户名?
(帖子列表 [标题 - 用户名])
@posts = Post.includes(:user).select('........')
不要提供这个
@posts = Post.all.each {|p| p.user.username}
__________________UP_____________________
它适用于连接 2 个表。
如果我想将它用于更复杂的示例怎么办?
查看我的上一个问题optimize sql query rails
@Humza 的回答部分有效。 可能是这样的
@posts = Post.joins(:user, :category).paginate(:page => params[:page]).order("created_at DESC")
但它不显示没有类别的帖子
我还需要显示 gravatar,但我认为我可以将 user.email 用作 usr_email 并使用 gravatar_for (post.usr_email),但我必须为此自定义 gravatar 助手。
posts_controller.rb
def index
@posts = Post.includes(:user).includes(:comments).paginate(:page => params[:page]).order("created_at DESC")
end
index.html.erb
<%= render @posts %>
_post.html.erb
<%= gravatar_for post.user, size:20 %>
<%= link_to "#{post.title}", post_path(post) %>
<%= time_ago_in_words(post.created_at) %>
<%= post.comments.count %>
<%= post.category.name if post.category %>
【问题讨论】:
标签: ruby-on-rails activerecord