2010-05-12 31 views
2

我想知道如何在PostController#索引中對帖子進行排序,以通過單獨的表中的列總數進行顯示。這是我如何設置的。如何從一張單獨的表中總結我的輸入?

class Post < ActiveRecord::Base 
    :has_many :votes 
end 

Class Vote < ActiveRecord::Base 
    :belongs_to :post 
end 

我的用戶可以投票或上下某一職位。我知道有可能有更好的方式去做我目前正在做的事情,但是根據我目前的情況尋找解決辦法。當用戶投票發佈帖子時,值1會通過隱藏字段傳遞給投票表。當用戶投票發表帖子時,值-1被傳遞給同一列(名稱投票)。

我想知道如何以特定帖子的投票欄(在投票表中)的順序顯示我的帖子。

另一種方式說,如果某個職位有5淨投總和,我想,要出現上述後與4

網投票和我假設我需要以某種方式影響PostController#索引操作。但不知道該怎麼做。

回答

1

試試這個:

@posts = Post.all(:select => "posts.*, SUM(votes.vote) as vote_total", 
     :joins => "LEFT JOIN votes AS votes ON votes.post_id = posts.id", 
     :group => "posts.id", 
     :order => "vote_total DESC") 
@posts.each do |post| 
    post.vote_total 
end 
+0

一如既往,感謝。 – bgadoci 2010-05-13 15:26:46

+0

只需快速跟進此問題即可。我將帖子#索引的顯示移到了帖子控制器之外。本質上,我正在捲起問題下的帖子。我在問題展示中成功呈現_post文件,但現在沒有正確排序。任何明顯的我失蹤? – bgadoci 2010-05-15 04:07:17

+0

發佈一個鏈接到您的代碼,可能很容易回答。 – 2010-05-15 04:47:09

0

你可以使用像下面這樣的東西。

class Post < ActiveRecord::Base 
    :has_many :votes 
    named_scope :post_list, 
       :select=>" posts.id, posts.title,posts.description, votes.total",  
       :joins => :votes, "LEFT JOIN votes ON posts.id = votes.post_id" 
       :order => "votes.total DESC" 

end 
相關問題