Вместо этого вы хотите создать ассоциацию «многие ко многим» и запросить ее:
class HealthProfile < ApplicationRecord
belongs_to :client, optional: true
has_many :panic_attacks
end
class PanicAttack
belongs_to :health_profile
end
Это позволит вам, например, подсчитать количество атак с помощью группировки:
profile = HealthProfile.find(1)
# this is postgres specific - use the group_date gem if you need something polyglot
per_month = profile.panic_attacks
.group("date_trunc('month', panic_attacks.started_at)")
.count
И вы также можете использовать другие виды агрегатных функций, такие как средние значения и средства для получения значимой статистики. Например, улучшение может заключаться в уменьшении количества или средней длины.
Логические столбцы - это беда.