1

この関連付けを確立したとしましょう:

class Budget
  has_many :forfeitures
  scope :with_forfeitures, ->{ joins(:forfeitures) }
end

class Forfeiture
  belongs_to :budget      
  scope :between, ->(from, to) { where("created_at > ? AND created_at < ?", from, to)}
end

今、私はこれを行うことができます:

Budget.with_forfeitures.where("forfeitures.created_at > ? AND forfeitures.created_at < ?", from_date, to_date)

betweenしかし、生のSQLでスコープを書かなければならなかったことに注意してください。

代わりに、没収に適用されるようなBudget.with_forfeitures.between(from_date, to date)ことをすることはできますか? それができない場合、生のSQLでスコープbetweenを複製せずに同じ結果を得るにはどうすればよいですか?between

4

1 に答える 1

1

私は書いてみますBudget.joins(:forfeitures).merge(Forfeiture.between(from, to))

したがって、mergeメソッドはあなたのために働くはずです。

railscasts.comのエピソード 215エピソード 239をご覧になることをお勧めします。

于 2013-06-18T13:00:08.033 に答える