2016-02-04 30 views
0

我的電影模特has_many:預告片。預告片有一個用於is_feature_trailer的布爾列。Rails&Active Record:如何訪問兄弟會關聯?

在我的trailers_controller索引中,我渲染了所有的拖尾.where(is_feature_trailer:false)。

在_trailer.html.erb我想顯示相關的功能預告片,如果它存在(如果trailer.movi​​e.trailer.where(is_feature_trailer:true))。但是我想避免在渲染每個預告片時進行這個查詢。

完成此操作的最佳方法是什麼?

+0

電影可以有很多'featured_trailers'或一個? – Pavan

回答

1

您可以指定條件對associations

#movie.rb 
has_many :trailers 
has_one :featured_trailer, -> { where(is_featured_trailer: true) }, class_name: "Trailer" 

OR

您可以使用scope

#trailer.rb 
scope :featured_trailer, ->(movie) { where(movie_id: movie.id, is_featured_trailer: true) } 
+1

完美,謝謝! –

相關問題