让我们说我已建立了这种关联:
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)
但请注意,我必须在原始sql中编写between
范围。
我可以改为做Budget.with_forfeitures.between(from_date, to date)
这样的事情但是between
适用于没收吗?如果我不能这样做,如何在不重复原始SQL的between
范围的情况下实现相同的结果?
答案 0 :(得分:1)
我试着写Budget.joins(:forfeitures).merge(Forfeiture.between(from, to))
因此,merge
方法适合您。
我建议您从railscasts.com观看episode 215和episode 239