Module: Ordy::Orm::ActiveRecord::Orderable::Order::ClassMethods
- Defined in:
- lib/ordy/orm/active_record/orderable.rb
Instance Method Summary collapse
- #default_order(name = nil) ⇒ Object
-
#order_by(order_query = nil) ⇒ Object
Model.order_by(name: :desc).
-
#order_by_specified(name) ⇒ Object
Model.order_by_specified(:name).
-
#orderable_by(&block) ⇒ Object
orderable_by do column :name association :comments specified(state: %w(new pending_migration migrating failed)).
Instance Method Details
#default_order(name = nil) ⇒ Object
160 161 162 |
# File 'lib/ordy/orm/active_record/orderable.rb', line 160 def default_order(name = nil) default_scope.instance_exec(&@_orderables.default(name)) end |
#order_by(order_query = nil) ⇒ Object
Model.order_by(name: :desc)
Model.order_by(‘name-desc’)
Default direction :asc Model.order_by(name)
Call default do method or order(nil) Model.order_by(nil) Model.order_by(”)
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/ordy/orm/active_record/orderable.rb', line 126 def order_by(order_query = nil) return default_order if order_query.nil? || order_query.blank? return default_order(order_query) if order_query.is_a?(Symbol) specs = case order_query when String then parse_order_query(order_query) when Hash then parse_order_hash(order_query) else [] end return default_order if specs.blank? scope = default_scope specs.each do |spec| orderable = @_orderables[spec[:orderable]] orderable[:args][:direction] = spec[:direction] scope = orderable[:orderable].call(scope, orderable[:args]) end scope end |
#order_by_specified(name) ⇒ Object
Model.order_by_specified(:name)
155 156 157 158 |
# File 'lib/ordy/orm/active_record/orderable.rb', line 155 def order_by_specified(name) orderable = @_orderables["specified_#{name}".to_sym] orderable[:orderable].call(default_scope, orderable[:args]) end |
#orderable_by(&block) ⇒ Object
orderable_by do
column :name
association :comments
specified(state: %w(new pending_migration migrating failed))
query(:topics) do |scope, args|
...
end
end
108 109 110 111 112 |
# File 'lib/ordy/orm/active_record/orderable.rb', line 108 def orderable_by(&block) @_orderables ||= Order.new(self) @_orderables.instance_eval(&block) @_orderables end |