diff --git a/app/controllers/super_admin/registry_values_controller.rb b/app/controllers/super_admin/registry_values_controller.rb index ac5c1a1..93acf69 100644 --- a/app/controllers/super_admin/registry_values_controller.rb +++ b/app/controllers/super_admin/registry_values_controller.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true module SuperAdmin + class RegistryValuesController < ApplicationController def new @@ -28,7 +29,6 @@ authorize(@registry) end - def update @registry_value = RegistryValue.find(params[:id]) @registry = @registry_value.registry @@ -54,7 +54,6 @@ end end - # Private instance methods private diff --git a/app/models/registry_value.rb b/app/models/registry_value.rb index 76ec720..f69a4c1 100644 --- a/app/models/registry_value.rb +++ b/app/models/registry_value.rb @@ -11,12 +11,27 @@ class RegistryValue < ActiveRecord::Base + include ValidationMessages + # ================ # = Associations = # ================ belongs_to :registry + # =============== + # = Validations = + # =============== + + validates :order, presence: { message: PRESENCE_MESSAGE }, + uniqueness: { scope: :registry_id, + message: UNIQUENESS_MESSAGE } + # ============= + # = Callbacks = + # ============= + + before_validation :set_order, if: :registry_id_changed? + # Prints a representation of the registry_value according to the locale # If there's a label, then the registry value is a complex object, return the label # else returns the registry value is a simple string, returns the string @@ -30,4 +45,11 @@ end end + # ============================ + # = Private instance methods = + # ============================ + def set_order + self.order = registry.registry_values.where.not(id: id).maximum(:order).to_i + 1 + end + end diff --git a/db/migrate/20210426122152_add_order_to_registry_value.rb b/db/migrate/20210426122152_add_order_to_registry_value.rb new file mode 100644 index 0000000..4d870d7 --- /dev/null +++ b/db/migrate/20210426122152_add_order_to_registry_value.rb @@ -0,0 +1,5 @@ +class AddOrderToRegistryValue < ActiveRecord::Migration + def change + add_column :registry_values, :order, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 0126cd5..074e0f7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20201012085101) do +ActiveRecord::Schema.define(version: 20210426122152) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -360,6 +360,7 @@ t.integer "registry_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.integer "order" end add_index "registry_values", ["registry_id"], name: "index_registry_values_on_registry_id", using: :btree diff --git a/lib/tasks/madmpopidor.rake b/lib/tasks/madmpopidor.rake index 0ffb1f8..08804ac 100644 --- a/lib/tasks/madmpopidor.rake +++ b/lib/tasks/madmpopidor.rake @@ -107,11 +107,15 @@ r.name = registry_name r.version = 1 end - registry_values.each do |reg_val| + registry_values.each_with_index do |reg_val, idx| if reg_val["label"].present? - RegistryValue.create!(data: reg_val, registry: registry) + RegistryValue.create!(data: reg_val, registry: registry, order: idx) else - RegistryValue.create!(data: { "value" => reg_val }, registry: registry) + RegistryValue.create!( + data: { "value" => reg_val }, + registry: registry, + order: idx + ) end end end