mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 13:09:18 +08:00
Patch ActiveRecord::Relation#references and clean up
This commit is contained in:
parent
9ab2471a92
commit
2e700dd26d
14
lib/freedom_patches/active_record_relation.rb
Normal file
14
lib/freedom_patches/active_record_relation.rb
Normal 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
|
|
@ -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?
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user