【Rails】JOINするscopeを書く
同一のJOINを複数のscopeやメソッド,コンテキストで使用する場合, それ自体をscopeとして定義しておくとちょっとDRYになる.
scope :join_before_date_period, -> do before = Event.arel_table.alias('before_event') joins( arel_table.join(before, Arel::Nodes::OuterJoin) .on(before[:id].eq arel_table[:before_event_id]).join_sources ) end
同じalias貼ったarel_table
を使いまわす場合はメソッドに切り出すといいのかな?
scope :join_before_date_period, -> do before = before_event_arel_table joins( arel_table.join(before, Arel::Nodes::OuterJoin) .on(before[:id].eq arel_table[:before_event_id]).join_sources ) end def before_event_arel_table Event.arel_table.alias('before_event') end
SQL力とArel力,あげていこうな.