add account_id to submissions
This commit is contained in:
@@ -10,7 +10,8 @@ class StartFormController < ApplicationController
|
||||
before_action :load_template
|
||||
|
||||
def show
|
||||
@submitter = @template.submissions.new.submitters.new(uuid: @template.submitters.first['uuid'])
|
||||
@submitter = @template.submissions.new(account_id: @template.account_id)
|
||||
.submitters.new(uuid: @template.submitters.first['uuid'])
|
||||
end
|
||||
|
||||
def update
|
||||
@@ -68,6 +69,7 @@ class StartFormController < ApplicationController
|
||||
end
|
||||
|
||||
submitter.submission ||= Submission.new(template:,
|
||||
account_id: template.account_id,
|
||||
template_submitters: template.submitters,
|
||||
source: :link)
|
||||
|
||||
|
||||
@@ -15,11 +15,13 @@
|
||||
# template_submitters :text
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# account_id :bigint not null
|
||||
# created_by_user_id :bigint
|
||||
# template_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_submissions_on_account_id (account_id)
|
||||
# index_submissions_on_created_by_user_id (created_by_user_id)
|
||||
# index_submissions_on_slug (slug) UNIQUE
|
||||
# index_submissions_on_template_id (template_id)
|
||||
@@ -31,7 +33,7 @@
|
||||
#
|
||||
class Submission < ApplicationRecord
|
||||
belongs_to :template
|
||||
has_one :account, through: :template
|
||||
belongs_to :account
|
||||
belongs_to :created_by_user, class_name: 'User', optional: true
|
||||
|
||||
has_many :submitters, dependent: :destroy
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
class Submitter < ApplicationRecord
|
||||
belongs_to :submission
|
||||
has_one :template, through: :submission
|
||||
has_one :account, through: :template
|
||||
has_one :account, through: :submission
|
||||
|
||||
attribute :values, :string, default: -> { {} }
|
||||
attribute :preferences, :string, default: -> { {} }
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddAccountIdToSubmissions < ActiveRecord::Migration[7.1]
|
||||
class MigrationSubmission < ApplicationRecord
|
||||
self.table_name = 'submissions'
|
||||
end
|
||||
|
||||
class MigrationTemplate < ApplicationRecord
|
||||
self.table_name = 'templates'
|
||||
end
|
||||
|
||||
class MigrationAccount < ApplicationRecord
|
||||
self.table_name = 'accounts'
|
||||
end
|
||||
|
||||
def change
|
||||
add_reference :submissions, :account, index: true, null: true
|
||||
|
||||
MigrationAccount.all.each do |account|
|
||||
MigrationSubmission.where(template_id: MigrationTemplate.where(account_id: account.id).select(:id))
|
||||
.update_all(account_id: account.id)
|
||||
end
|
||||
|
||||
change_column_null :submissions, :account_id, false
|
||||
end
|
||||
end
|
||||
+3
-1
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.1].define(version: 2024_02_01_210319) do
|
||||
ActiveRecord::Schema[7.1].define(version: 2024_02_03_113454) do
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
@@ -151,6 +151,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_01_210319) do
|
||||
t.string "submitters_order", null: false
|
||||
t.string "slug", null: false
|
||||
t.text "preferences", null: false
|
||||
t.bigint "account_id", null: false
|
||||
t.index ["account_id"], name: "index_submissions_on_account_id"
|
||||
t.index ["created_by_user_id"], name: "index_submissions_on_created_by_user_id"
|
||||
t.index ["slug"], name: "index_submissions_on_slug", unique: true
|
||||
t.index ["template_id"], name: "index_submissions_on_template_id"
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ class Ability
|
||||
def initialize(user)
|
||||
can :manage, Template, account_id: user.account_id
|
||||
can :manage, TemplateFolder, account_id: user.account_id
|
||||
can :manage, Submission, template: { account_id: user.account_id }
|
||||
can :manage, Submitter, template: { account_id: user.account_id }
|
||||
can :manage, Submission, account_id: user.account_id
|
||||
can :manage, Submitter, submission: { account_id: user.account_id }
|
||||
can :manage, User, account_id: user.account_id
|
||||
can :manage, EncryptedConfig, account_id: user.account_id
|
||||
can :manage, EncryptedUserConfig, user_id: user.id
|
||||
|
||||
@@ -32,6 +32,7 @@ module Submissions
|
||||
|
||||
parse_emails(emails).uniq.map do |email|
|
||||
submission = template.submissions.new(created_by_user: user,
|
||||
account_id: user.account_id,
|
||||
source:,
|
||||
template_submitters: template.submitters)
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ module Submissions
|
||||
set_submission_preferences['send_email'] = true if params['send_completed_email']
|
||||
|
||||
submission = template.submissions.new(created_by_user: user, source:,
|
||||
account_id: user.account_id,
|
||||
preferences: set_submission_preferences,
|
||||
template_submitters: [], submitters_order:)
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ FactoryBot.define do
|
||||
created_by_user factory: %i[user]
|
||||
|
||||
before(:create) do |submission, _|
|
||||
submission.account_id = submission.template.account_id
|
||||
submission.template_fields = submission.template.fields
|
||||
submission.template_schema = submission.template.schema
|
||||
submission.template_submitters = submission.template.submitters
|
||||
|
||||
Reference in New Issue
Block a user