diff --git a/app/controllers/user_samples_controller.rb b/app/controllers/user_samples_controller.rb index 0aaeeeffc..4594b2acf 100644 --- a/app/controllers/user_samples_controller.rb +++ b/app/controllers/user_samples_controller.rb @@ -1,7 +1,9 @@ class UserSamplesController < ApplicationController def save_samples_table_status samples_table = SamplesTable.where(user: @current_user, - team: params[:team]).first + team: params[:team]) + .order(:id) + .first if samples_table samples_table.update(status: params[:state]) else @@ -20,7 +22,7 @@ class UserSamplesController < ApplicationController def load_samples_table_status samples_table_state = SamplesTable.find_status(current_user, - current_team).first + current_team) if samples_table_state.blank? st = SamplesTable.new(user: current_user, team: current_team) st.save diff --git a/app/datatables/sample_datatable.rb b/app/datatables/sample_datatable.rb index 374cb8554..727ecd910 100644 --- a/app/datatables/sample_datatable.rb +++ b/app/datatables/sample_datatable.rb @@ -489,10 +489,7 @@ class SampleDatatable < CustomDatatable end def generate_sortable_displayed_columns - sort_order = SamplesTable.where(user: @user, - team: @team) - .pluck(:status) - .first['ColReorder'] + sort_order = SamplesTable.find_status(@user, @team)['ColReorder'] sort_order.shift sort_order.map! { |i| (i.to_i - 1).to_s } diff --git a/app/models/samples_table.rb b/app/models/samples_table.rb index 84e58edfe..c0c404055 100644 --- a/app/models/samples_table.rb +++ b/app/models/samples_table.rb @@ -3,15 +3,18 @@ class SamplesTable < ApplicationRecord belongs_to :team, inverse_of: :samples_tables, optional: true validates :user, :team, presence: true - validates :user, uniqueness: { scope: :team } - scope :find_status, - ->(user, team) { where(user: user, team: team).pluck(:status) } + scope :find_status, (lambda do |user, team| + where(user: user, team: team) + .order(:id).pluck(:status).first + end) def self.update_samples_table_state(custom_field, column_index) samples_table = SamplesTable.where(user: custom_field.user, team: custom_field.team) - team_status = samples_table.first['status'] + .order(:id) + .first + team_status = samples_table['status'] if column_index # delete column team_status['columns'].delete(column_index)