我有一个Post模型和一个Comment模型;发表has_many评论,评论发表所有帖子
在我的Post控制器中,我想选择一个随机评论,并显示评论的日期。我有点困惑如何从我的Post控制器查询。
在我的Post Controller中,我有:
@posts = Post.where(:public_flag => true).order('created_at DESC')
此后我有点卡住了。我应该从视图中获得评论吗?或者从控制器执行另一个查询以获取注释?那么,一旦得到所有评论,我该如何选择随机评论?
提前致谢!真的很感谢你的帮助。
答案 0 :(得分:1)
对您的问题应用this回答:
offset = rand(@post.comments.count)
# Rails 4
rand_record = @post.comments.offset(offset).first
# Rails 3
rand_record = @post.comments.first(:offset => offset)
我希望它有所帮助
答案 1 :(得分:0)
现在确定为您的案例显示随机评论的目的是什么。但是,您可以在控制器中执行此操作:
@posts = Post.includes(:comments).where(:public_flag => true).order('created_at DESC')
然后在视图中:
<% @posts.each do |post| %>
Post title: <%= post.title %>
<%= post.comments.sample.created_at # will show a random comment's created_at date per post %>
<% end %>
Read this了解sample
的作用。