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
.adapter ⇒ Object
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_func ⇒ Object
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
|