Patch ActiveRecord::Relation#references and clean up

This commit is contained in:
Navin 2013-08-16 14:53:40 +02:00
parent 9ab2471a92
commit 2e700dd26d
4 changed files with 25 additions and 21 deletions

View file

@ -0,0 +1,14 @@
unless Rails.version =~ /^4/
module ActiveRecord
class Relation
# Patch Rails 3 ActiveRecord::Relation to noop on Rails 4 references
# thereby getting code that works for rails 3 and 4 without
# deprecation warnings
def references(*args)
self
end
end
end
end

View file

@ -118,9 +118,7 @@ class Search
.order("topics_month DESC")
.secured(@guardian)
.limit(@limit)
if rails4?
categories = categories.references(:category_search_data)
end
.references(:category_search_data)
categories.each do |c|
@results.add_result(SearchResult.from_category(c))
@ -133,9 +131,7 @@ class Search
.order("CASE WHEN username_lower = '#{@original_term.downcase}' THEN 0 ELSE 1 END")
.order("last_posted_at DESC")
.limit(@limit)
if rails4?
users = users.references(:user_search_data)
end
.references(:user_search_data)
users.each do |u|
@results.add_result(SearchResult.from_user(u))
@ -148,10 +144,7 @@ class Search
.where("topics.deleted_at" => nil)
.where("topics.visible")
.where("topics.archetype <> ?", Archetype.private_message)
if rails4?
posts = posts.references(:post_search_data, {:topic => :category})
end
.references(:post_search_data, {:topic => :category})
# If we have a search context, prioritize those posts first
if @search_context.present?

View file

@ -212,23 +212,23 @@ class TopicQuery
end
result = result.listable_topics.includes(category: :topic_only_relative_url)
result = (rails4? ? result.where('categories.name is null or categories.name <> ?', options[:exclude_category]).references(:categories) : result.where('categories.name is null or categories.name <> ?', options[:exclude_category])) if options[:exclude_category]
result = (rails4? ? result.where('categories.name = ?', options[:only_category]).references(:categories) : result.where('categories.name = ?', options[:only_category])) if options[:only_category]
result = result.where('categories.name is null or categories.name <> ?', options[:exclude_category]).references(:categories) if options[:exclude_category]
result = result.where('categories.name = ?', options[:only_category]).references(:categories) if options[:only_category]
result = result.limit(options[:per_page]) unless options[:limit] == false
result = result.visible if options[:visible] || @user.nil? || @user.regular?
result = (rails4? ? result.where('topics.id <> ?', options[:except_topic_id]).references(:topics) : result.where('topics.id <> ?', options[:except_topic_id])) if options[:except_topic_id]
result = result.where('topics.id <> ?', options[:except_topic_id]).references(:topics) if options[:except_topic_id]
result = result.offset(options[:page].to_i * options[:per_page]) if options[:page]
if options[:topic_ids]
result = rails4? ? result.where('topics.id in (?)', options[:topic_ids]).references(:topics) : result.where('topics.id in (?)', options[:topic_ids])
result = result.where('topics.id in (?)', options[:topic_ids]).references(:topics)
end
unless @user && @user.moderator?
category_ids = @user.secure_category_ids if @user
if category_ids.present?
result = rails4? ? result.where('categories.read_restricted IS NULL OR categories.read_restricted = ? OR categories.id IN (?)', false, category_ids).references(:categories) : result.where('categories.read_restricted IS NULL OR categories.read_restricted = ? OR categories.id IN (?)', false, category_ids)
result = result.where('categories.read_restricted IS NULL OR categories.read_restricted = ? OR categories.id IN (?)', false, category_ids).references(:categories)
else
result = rails4? ? result.where('categories.read_restricted IS NULL OR categories.read_restricted = ?', false).references(:categories) : result.where('categories.read_restricted IS NULL OR categories.read_restricted = ?', false)
result = result.where('categories.read_restricted IS NULL OR categories.read_restricted = ?', false).references(:categories)
end
end

View file

@ -15,11 +15,8 @@ module Trashable
#
# with this in place Post.limit(10).with_deleted, will work as expected
#
if rails4?
scope = self.all.with_default_scope
else
scope = self.scoped.with_default_scope
end
scope = rails4? ? self.all.with_default_scope : self.scoped.with_default_scope
scope.where_values.delete(with_deleted_scope_sql)
scope
end