Create reports

This table will store which reports (stats, results, ...) will be shown
for a certain process (polls, budgets, ...).

Note Rails fails to save a poll and its report when both are new records
if we add a `validate :process, presence: true` rule. Since it caused a
lot of trouble when creating records for tests during factories rule
completely. Instead, I've created the `results_enabled=` and
`stats_enabled=` methods, so tests are easier to set up, while also
automatically creating a report if it doesn't already exist. This also
decouples form structure and database implemenation.

Originally I named this table `enabled_reports` and instead of having
`stats` and `results` columns, it had an `enabled` column and a `kind`
column, which would be set to "stats" or "results". However, although
that table would allow us to add arbitrary reports easily, I found the
way we had to handle the `has_many` relationship was a bit too complex.
This commit is contained in:
Javi Martín
2019-04-29 14:13:46 +02:00
parent 2d29243a9e
commit 354b183e17
13 changed files with 136 additions and 11 deletions

View File

@@ -6,6 +6,7 @@ describe Poll do
describe "Concerns" do
it_behaves_like "notifiable"
it_behaves_like "reportable"
end
describe "validations" do