2014-11-04 81 views
0

我有一個Post模型和一個評論模型;發佈has_many評論和評論belongs_to發佈導軌,獲得隨機嵌套記錄的最佳方式

在我的發佈控制器中,我想選擇一個隨機評論,並顯示評論的日期。我有點困惑如何從我的郵政控制器查詢這個。

在我的崗位控制器,我有:

@posts = Post.where(:public_flag => true).order('created_at DESC') 

我在此之後有點卡住了。我應該從視圖中獲得評論嗎?或者從控制器做另一個查詢來獲得評論?那麼,一旦我收到所有評論,我怎麼才能選擇一個隨機評論?

在此先感謝!非常感謝您的幫助。

+0

_random_對此有何評論? – 2014-11-04 17:48:16

+0

不一定每個帖子 - 我只是想從所有評論中隨機發表評論,但後來我需要知道它來自哪個帖子 – gitastic 2014-11-04 17:50:10

+0

'Comment.all.sample.post'將完成這項工作。 – 2014-11-04 17:51:19

回答

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一樣。

+0

非常感謝!我似乎無法讓它工作。我添加了所有的代碼,它說'未定義的方法'create_at'。我也嘗試過與其他字段,即ID,評論等,這是所有未定義的方法爲零:NilClass – gitastic 2014-11-04 18:43:59

+0

@gitastic:其實,這是一個例子。我很抱歉錯誤地輸入了'create_at',它應該是'created_at',請參閱更新的修訂版本。 – Surya 2014-11-04 18:45:54

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) 

我希望它能幫助每個職位