0

次のようなスコープを使用します。

# 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クエリを別のスコープ クエリとして受け入れるにはどうすればよいですか?

ありがとうございました

4

0 に答える 0