尝试显示包含帖子的类别列表。听起来很简单,但我有点卡住了。 与此相似
ActiveRecord find all parents that have associated children
class Category < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :category
end
你能帮忙吗?我尝试了命名范围,但打破了应用程序。
答案 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
整数字段才能生效。建议您第一次保存所有类别以填充此字段。