Используйте named_scope, чтобы найти количество связанных строк (Ruby on Rails + Searchlogic вопрос) - PullRequest
0 голосов
/ 11 мая 2010

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

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

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

1 Ответ

0 голосов
/ 11 мая 2010

Хотите заказать по количеству постов, верно?

Я думаю, что проще, если вы используете :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.

Я верю, что это так.

...