我有两个对象,主题和博客,博客有一个关于它是否已发布的枚举。在我网站的侧边栏中,我有一个主题列表可供查看:
<% @sidebar_topics.each do |x| %>
<hr>
<li><%= link_to x.title, topic_path(x) %></li>
<% end %>
但其中一些是空白的,所以我把@sidebar_topics = Topic.with_blogs
扔进了控制器,删除了没有博客的主题的链接,但是,我有一些它没有发布的博客,意思是:链接存在是因为有博客,但我不想要它,因为它所拥有的博客仍然处于草稿模式,因此不可见,这使得页面看起来像链接到一个空主题。 ..
我不完全确定要分享的信息,我之后只有链接(@sidebar_topics)包含已发布博客的主题。
答案 0 :(得分:2)
class Topic < ActiveRecord::Base
scope :with_published_blogs, -> { joins(:blogs).where(blogs: { status: 'published' }) }
end
@sidebar_topics = Topic.with_published_blogs
仅使用status: 'published'
作为示例,假设您的Blog
枚举看起来像enum status: [:published, :draft]
。用已发布博客的实际enum
条件填写这一点。