Используйте named_scope, чтобы найти количество связанных строк (вопрос Ruby on Rails + Searchlogic)

Допустим, у меня есть:

class ForumTopic < ActiveRecord::Base
  has_many :forum_posts
  named_scope :number_of_posts, ??????
end

class ForumPost < ActiveRecord::Base
  belongs_to :forum_topic
end

Что мне поставить????? чтобы разрешить поисковый запрос, например:

ForumTopic.descend_by_number_of_posts

Любая помощь будет очень признательна!


person Community    schedule 11.05.2010    source источник


Ответы (1)


Вы хотите упорядочить по количеству постов, верно?

Я думаю, что будет проще, если вы используете :counter_cache, потому что если вы это сделаете, вы можете заказать вот так:

class ForumTopic < ActiveRecord::Base
  has_many :forum_posts
  named_scope :by_number_of_posts, :order => "forum_posts_count"
end

# controller
ForumTopic.by_number_of_posts.all

Чтобы использовать :counter_cache, вам нужно изменить ассоциацию

class ForumPost < ActiveRecord::Base
  belongs_to :forum_topic, :counter_cache => true
end

и создайте столбец forum_posts_count в таблице forum_topics.

Я считаю, что это все.

person Community    schedule 11.05.2010