Как я могу заказать свои записи по сумме из отдельной таблицы? - PullRequest
2 голосов
/ 12 мая 2010

Мне интересно, как можно упорядочить записи в моем индексе PostController # для отображения по итоговому столбцу в отдельной таблице. Вот как я это настроил.

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

и

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

Пользователь I может голосовать за или против определенного сообщения. Я знаю, что, вероятно, есть лучшие способы сделать то, что я делаю в настоящее время, но ищу решение, учитывая мою текущую ситуацию. Когда пользователь голосует за сообщение, значение 1 передается в таблицу голосования через скрытое поле. Когда пользователь отклоняет сообщение, значение -1 передается в тот же столбец (имена голосуют).

Мне интересно, как я могу отображать свои сообщения в порядке суммы столбца голосования (в таблице голосования) для конкретного сообщения.

Еще один способ сказать, что если конкретное сообщение имеет чистую сумму голосов 5, я хочу, чтобы оно отображалось над сообщением с чистой суммой голосов 4.

Я предполагаю, что мне нужно каким-то образом повлиять на действие индекса PostController #. Но не уверен, как это сделать.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Попробуйте это:

@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 голосов
/ 12 мая 2010

Вы можете использовать что-то вроде следующего.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...