Commit d1496a55e665028d4e8bdbcbd0ca66c8260b43ff
Exists in
master
and in
23 other branches
Merge branch 'stable'
Showing
5 changed files
with
19 additions
and
4 deletions
Show diff stats
app/models/communities_block.rb
| ... | ... | @@ -49,7 +49,7 @@ class CommunitiesBlock < ProfileListBlock |
| 49 | 49 | # FIXME when owner is an environment (i.e. listing communities globally |
| 50 | 50 | # this can become SLOW) |
| 51 | 51 | if block.owner.kind_of?(Environment) |
| 52 | - block.owner.communities.all(:conditions => {:visible => true}, :limit => block.limit, :order => 'random()').map(&:id) | |
| 52 | + block.owner.communities.all(:conditions => {:visible => true}, :limit => block.limit, :order => Noosfero::SQL.random_function).map(&:id) | |
| 53 | 53 | else |
| 54 | 54 | block.owner.communities(:visible => true).map(&:id) |
| 55 | 55 | end | ... | ... |
app/models/enterprises_block.rb
| ... | ... | @@ -46,7 +46,7 @@ class EnterprisesBlock < ProfileListBlock |
| 46 | 46 | # FIXME when owner is an environment (i.e. listing enterprises globally |
| 47 | 47 | # this can become SLOW) |
| 48 | 48 | if block.owner.kind_of?(Environment) |
| 49 | - block.owner.enterprises.all(:conditions => {:visible => true}, :limit => block.limit, :order => 'random()').map(&:id) | |
| 49 | + block.owner.enterprises.all(:conditions => {:visible => true}, :limit => block.limit, :order => Noosfero::SQL.random_function).map(&:id) | |
| 50 | 50 | else |
| 51 | 51 | block.owner.enterprises.select(&:visible).map(&:id) |
| 52 | 52 | end | ... | ... |
app/models/people_block.rb
| ... | ... | @@ -18,7 +18,7 @@ class PeopleBlock < ProfileListBlock |
| 18 | 18 | |
| 19 | 19 | class Finder < ProfileListBlock::Finder |
| 20 | 20 | def ids |
| 21 | - block.owner.people.visible.all(:limit => block.limit, :order => 'random()').map(&:id) | |
| 21 | + block.owner.people.visible.all(:limit => block.limit, :order => Noosfero::SQL.random_function).map(&:id) | |
| 22 | 22 | end |
| 23 | 23 | end |
| 24 | 24 | ... | ... |
app/models/profile_list_block.rb
| ... | ... | @@ -42,7 +42,7 @@ class ProfileListBlock < Block |
| 42 | 42 | rand(top) |
| 43 | 43 | end |
| 44 | 44 | def ids |
| 45 | - block.owner.profiles.visible.all(:limit => block.limit, :order => 'random()').map(&:id) | |
| 45 | + block.owner.profiles.visible.all(:limit => block.limit, :order => Noosfero::SQL.random_function).map(&:id) | |
| 46 | 46 | end |
| 47 | 47 | end |
| 48 | 48 | ... | ... |
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +module Noosfero | |
| 2 | + module SQL | |
| 3 | + class << self | |
| 4 | + | |
| 5 | + def random_function() | |
| 6 | + default = 'random()' | |
| 7 | + adapter = ActiveRecord::Base.configurations[Rails.env]['adapter'] | |
| 8 | + { | |
| 9 | + 'mysql' => 'rand()' | |
| 10 | + }[adapter] || default | |
| 11 | + end | |
| 12 | + | |
| 13 | + end | |
| 14 | + end | |
| 15 | +end | ... | ... |