Module: RandomOrder

Defined in:
lib/random_order.rb,
lib/random_order/railtie.rb,
lib/random_order/version.rb,
lib/random_order/random_order/extension.rb

Defined Under Namespace

Modules: Extension Classes: Railtie

Constant Summary collapse

ORDERS =
Hash.new(Arel.sql('RANDOM()')).update({"mysql2" => Arel.sql('RAND()')})
VERSION =
'0.2.0'

Class Method Summary collapse

Class Method Details

.adapterObject



6
7
8
9
10
11
12
# File 'lib/random_order.rb', line 6

def self.adapter
  @@adapter ||= begin
    if self.const_defined?("ActiveRecord")
      ActiveRecord::Base.configurations[Rails.env]['adapter']
    end
  end
end

.order_funcObject



14
15
16
# File 'lib/random_order.rb', line 14

def RandomOrder.order_func
  ORDERS[adapter]
end

.sql_query_string(model, n) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/random_order.rb', line 18

def self.sql_query_string(model, n)
  model.from(
    "(SELECT * FROM #{model.table_name}, ( SELECT #{model.primary_key} AS sid "\
    "FROM #{model.table_name} ORDER BY #{RandomOrder.order_func} LIMIT #{n} ) tmp WHERE "\
    "#{model.table_name}.#{model.primary_key} = tmp.sid) as #{model.table_name}"
  )
end