鉴于以下两个模型:
class Wheel
belongs_to :car
def self.flat
where(flat: true)
end
和
class Car
has_many :wheels
def flats
self.wheels.flat
end
def has_flats?
flats.count > 0
end
我需要查询所有带有扁平轮胎的汽车。我想知道为什么这不适用于汽车模型?:
def self.with_flats
where(:has_flats?)
end
或
def self.with_flats
where(:has_flats? == true)
end
这不会返回正确的记录。有什么想法吗?
答案 0 :(得分:2)
在Car model中定义范围:
class Car
has_many :wheels
scope :having_flat_wheels, joins(:wheels).where("wheels.flat=?", true).uniq
......
end
然后让所有汽车都有轮胎:
Car.having_flat_wheels