次のようなスコープを使用します。
# controller
sales_rep = Car.sales_rep(branch_id)
# model - scope
scope :sales_rep, -> (branch_id) {
find_by_sql("... a big, complicated query ...")
}
これは今のところうまく機能していますが、次のような別の「フィルター」を追加する必要があります。
sales_rep = Car.sales_rep(branch_id).by_year(params[:year]).by_year(params[:month])
モデルに追加のスコープを追加します。
scope :by_year, (lambda do |year|
if year.present?
where('YEAR(s.delivery_date) = ?', year)
end
end)
scope :by_month, (lambda do |month|
if month.present?
self.where('MONTH(s.delivery_date) = ?', month)
end
end)
このコードを実行すると、次のエラーが発生します。
undefined method `by_year' for #<Array:0x007f8203f8a660>
find_by_sql
クエリを別のスコープ クエリとして受け入れるにはどうすればよいですか?
ありがとうございました