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.
12 lines
242 B
Ruby
12 lines
242 B
Ruby
class CreateReports < ActiveRecord::Migration[5.0]
|
|
def change
|
|
create_table :reports do |t|
|
|
t.boolean :stats
|
|
t.boolean :results
|
|
t.references :process, polymorphic: true
|
|
|
|
t.timestamps null: false
|
|
end
|
|
end
|
|
end
|