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"
|
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?
|
||||||
|
|||||||
@@ -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