Monkey patch a prepend_order method
This commit is contained in:
@@ -6,12 +6,7 @@ module Card::Golden
|
||||
|
||||
has_one :goldness, dependent: :destroy, class_name: "Card::Goldness"
|
||||
|
||||
scope :with_golden_first, -> do
|
||||
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
|
||||
scope :with_golden_first, -> { left_outer_joins(:goldness).prepend_order("card_goldnesses.id IS NULL") }
|
||||
end
|
||||
|
||||
def golden?
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user