2017-08-07 7 views
1

トピックとブログの2つのオブジェクトがあります。ブログには公開されているかどうかの列挙型があります。自分のサイトのサイドバーで、私は閲覧可能なトピックのリストを持っている:別のオブジェクトからルビの列挙をチェックする

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

をしかし、それらのいくつかは空白になっているので、私は、NOのブログでトピックへのリンクを削除し、コントローラに@sidebar_topics = Topic.with_blogsに投げたが、私はいくつかのブログを持っています。つまり、ブログがあるのでリンクが存在しますが、そのブログはまだドラフトモードになっているため、空のトピックにリンクしているように見えるようにします...

共有する情報は完全にはわかりませんが、私は後でリンク(@sidebar_topics)にブログを公開したトピックのみを含むようにしています。ちょうどあなたのBlog列挙型を想定している例としてstatus: 'published'を使用して

+1

'with_blogs'メソッドのコードを投稿 – Pavan

答えて

2
class Topic < ActiveRecord::Base 
    scope :with_published_blogs, -> { joins(:blogs).where(blogs: { status: 'published' }) } 
end 

@sidebar_topics = Topic.with_published_blogs 

enum status: [:published, :draft]ようになります。公開されたブログのためにあなた自身の実際のenum条件でそのビットを埋めてください。

+0

ダン、スコープを追加...今私は気が気になりませんが、感謝! –

関連する問題