从另一个对象检查ruby枚举

时间:2017-08-07 17:38:14

标签: ruby-on-rails ruby enums

我有两个对象,主题和博客,博客有一个关于它是否已发布的枚举。在我网站的侧边栏中,我有一个主题列表可供查看:

<% @sidebar_topics.each do |x| %>
  <hr>
  <li><%= link_to x.title, topic_path(x) %></li>
<% end %>

但其中一些是空白的,所以我把@sidebar_topics = Topic.with_blogs扔进了控制器,删除了没有博客的主题的链接,但是,我有一些它没有发布的博客,意思是:链接存在是因为有博客,但我不想要它,因为它所拥有的博客仍然处于草稿模式,因此不可见,这使得页面看起来像链接到一个空主题。 ..

我不完全确定要分享的信息,我之后只有链接(@sidebar_topics)包含已发布博客的主题。

1 个答案:

答案 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条件填写这一点。