Rails&活动记录:如何访问兄弟关联?

时间:2016-02-04 19:34:34

标签: ruby-on-rails activerecord

我的电影模特has_many:预告片。预告片有一个is_feature_trailer的布尔列。

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

在_trailer.html.erb中我想显示相关的特征预告片(如果它存在)(如果trailer.movi​​e.trailer.where(is_feature_trailer:true))。但我想避免提出这个问题,因为我正在渲染每个预告片。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

您可以在associations上指定 条件

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

您可以使用scope

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