Monkey patch a prepend_order method

This commit is contained in:
Jorge Manrubia
2025-04-11 10:28:12 +02:00
parent 4f3f322528
commit 17aa9b97e9
2 changed files with 17 additions and 6 deletions
+1 -6
View File
@@ -6,12 +6,7 @@ module Card::Golden
has_one :goldness, dependent: :destroy, class_name: "Card::Goldness" has_one :goldness, dependent: :destroy, class_name: "Card::Goldness"
scope :with_golden_first, -> do scope :with_golden_first, -> { left_outer_joins(:goldness).prepend_order("card_goldnesses.id IS NULL") }
left_outer_joins(:goldness).tap do |relation|
# Make sure it can be layered in with other orderings taking precedence.
relation.order_values.unshift("card_goldnesses.id IS NULL")
end
end
end end
def golden? def golden?
+16
View File
@@ -0,0 +1,16 @@
module ActiveRecordRelationPrependOrder
extend ActiveSupport::Concern
included do
def prepend_order(*args)
new_orders = args.flatten.map { |arg| arg.is_a?(String) ? arg : arg.to_sql }
spawn.tap do |relation|
relation.order_values = new_orders + order_values
end
end
end
end
ActiveRecord::Relation.include(ActiveRecordRelationPrependOrder)
ActiveRecord::AssociationRelation.include(ActiveRecordRelationPrependOrder)