Я предполагаю, что вы хотите сделать что-то вроде weigh_in.overweight
, чтобы получить все WeighIn
с весом, превышающим weigh_in.target_weight
. Вы не можете делать это так, как хотите, так как область действия - это в основном метод класса, а target_weight
- метод экземпляра.
Что вы можете сделать, это добавить аргумент в область действия:
scope :overweight, ->(weight) { where("current_weight >= ?", weight) }
Затем добавьте метод экземпляра
def overweight
WeighIn.overweight(target_weight)
end
и теперь weigh_in.overweight
возвращает то, что вы хотите.
РЕДАКТИРОВАТЬ: если вы хотите получить все overwight weight_in, связанные с его пользователемвы должны присоединиться к таблицам, как ответ @ Майкельсона, что-то вроде:
scpoe :overweight, -> { joins(:clients).where('current_weight >= clients.target_weight') }