Rails 3, сортируемые столбцы таблицы по связанным моделям? - PullRequest
2 голосов
/ 17 января 2011

Я недавно подписался на http://railscasts.com/episodes/228-sortable-table-columns, чтобы добавить сортируемые столбцы таблицы в мое приложение. Это прекрасно работало, но некоторые столбцы в моей таблице - это что-то вроде post.comments.count (очевидно, посты имеют много комментариев). Я хотел бы иметь возможность сортировать по количеству комментариев к сообщению в таблице, но я не могу понять, как реализовать это, используя решение в Railscast.

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Самый простой способ - использовать counter_cache .

Используя миграцию, создайте поле базы данных comments_count:integer в таблице posts.

Затем обновите вашу модель:

class Comment < ActiveRecord::Base
  belongs_to :post, :counter_cache => true
end

Затем сортируйте по этому столбцу:

Post.order(:comments_count)
0 голосов
/ 17 января 2011

Одним из способов может быть столбец кэша счетчика в том случае, если вы упомянули

post.comments_count 
# instead of 
post.comments.count

Не уверен, будет ли это применимо в каждом из ваших случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...