1

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

ActiveRecord 查找所有有关联孩子的父母

class Category < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :category
end

你能帮忙吗?我尝试了命名范围但破坏了应用程序。

4

1 回答 1

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使其正常工作。首次保存所有类别以填充此字段也是可取的。

于 2013-06-27T09:35:02.467 回答