显示在Rails 4中包含帖子的类别

时间:2013-06-27 09:24:04

标签: ruby-on-rails activerecord ruby-on-rails-4

尝试显示包含帖子的类别列表。听起来很简单,但我有点卡住了。 与此相似

ActiveRecord find all parents that have associated children

class Category < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :category
end
你能帮忙吗?我尝试了命名范围,但打破了应用程序。

1 个答案:

答案 0 :(得分:1)

你可以使用像这样的范围

scope :with_posts, -> { includes(:posts).where("posts.id IS NOT NULL") }

或使用counter_cache

class Category < ActiveRecord::Base
  has_many :posts
  scope :with_posts, -> { where("posts_count > ?", 0) }
end

class Post < ActiveRecord::Base
  belongs_to :category, counter_cache: true
end

请注意,您必须在posts_count表中添加categories整数字段才能生效。建议您第一次保存所有类别以填充此字段。