lib/rails_admin/adapters/composite_primary_keys.rb
# frozen_string_literal: true
require 'rails_admin/adapters/active_record'
require 'rails_admin/adapters/composite_primary_keys/association'
module RailsAdmin
module Adapters
module CompositePrimaryKeys
include RailsAdmin::Adapters::ActiveRecord
def get(id, scope = scoped)
begin
object = scope.find(id)
rescue ::ActiveRecord::RecordNotFound
return nil
end
object.extend(RailsAdmin::Adapters::ActiveRecord::ObjectExtension)
end
def associations
model.reflect_on_all_associations.collect do |association|
RailsAdmin::Adapters::CompositePrimaryKeys::Association.new(association, model)
end
end
private
def bulk_scope(scope, options)
if primary_key.is_a? Array
options[:bulk_ids].map do |id|
scope.where(primary_key.zip(::CompositePrimaryKeys::CompositeKeys.parse(id)).to_h)
end.reduce(&:or)
else
super
end
end
end
end
end