From 6a215bc48823e754a11624de229b6d2fbd9d6b26 Mon Sep 17 00:00:00 2001 From: Pablo Brasero Date: Thu, 13 Feb 2020 20:46:11 +0000 Subject: [PATCH] Don't assume the foreign key will be ${FOO}_id --- lib/administrate/order.rb | 6 +++++- spec/lib/administrate/order_spec.rb | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/administrate/order.rb b/lib/administrate/order.rb index 4f32da6cd2..25f9d19602 100644 --- a/lib/administrate/order.rb +++ b/lib/administrate/order.rb @@ -62,7 +62,7 @@ def order_by_count(relation) end def order_by_id(relation) - relation.reorder("#{attribute}_id #{direction}") + relation.reorder("#{foreign_key(relation)} #{direction}") end def has_many_attribute?(relation) @@ -76,5 +76,9 @@ def belongs_to_attribute?(relation) def reflect_association(relation) relation.klass.reflect_on_association(attribute.to_s) end + + def foreign_key(relation) + reflect_association(relation).foreign_key + end end end diff --git a/spec/lib/administrate/order_spec.rb b/spec/lib/administrate/order_spec.rb index eca7eda98d..1522e23787 100644 --- a/spec/lib/administrate/order_spec.rb +++ b/spec/lib/administrate/order_spec.rb @@ -73,7 +73,10 @@ context "when relation has belongs_to association" do it "orders by id" do order = Administrate::Order.new(:name) - relation = relation_with_association(:belongs_to, foreign_key: "some_foreign_key") + relation = relation_with_association( + :belongs_to, + foreign_key: "some_foreign_key", + ) allow(relation).to receive(:reorder).and_return(relation) ordered = order.apply(relation)