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)between适用于没收的事情吗?如果我不能这样做,我如何在不复制between原始 sql 范围的情况下获得相同的结果?

4

1 回答 1

1

我会试着写Budget.joins(:forfeitures).merge(Forfeiture.between(from, to))

所以,merge方法应该适合你。

我建议你从 railscasts.com观看第 215集和第 239 集

于 2013-06-18T13:00:08.033 回答