检查来自另一个对象的 ruby 枚举



我有两个对象,主题和博客,博客有一个枚举来表示它是否发布。在我的网站的侧边栏上,我有一个主题列表,可查看为:

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

但是其中一些是空白的,所以我在控制器中加入了@sidebar_topics = Topic.with_blogs,该控制器删除了指向没有博客的主题的链接,但是,我有一些博客未发布,这意味着:链接存在是因为有博客,但我不希望它存在,因为它拥有的博客仍处于草稿模式, 因此不可见,这使得页面看起来像链接到一个空主题......

我不完全确定要分享什么信息,我想要的是只让链接(@sidebar_topics(包含已发布博客的主题。

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

最新更新