Я бы не использовал для этого одну область, а две:
scope :with_missing_coins, joins(:coins).where("coins.is_missing = ?", true)
scope :without_missing_coins, joins(:coins).where("coins.is_missing = ?", false)
Таким образом, когда эти области используются, тогда ясно, что происходит. С тем, что предлагает число 1311407, не сразу понятно, что делает аргумент false
для with_missing_coins
.
Мы должны постараться написать код настолько четко, насколько это возможно, и если это означает, что время от времени нужно быть менее фанатичным в отношении DRY, то пусть будет так.