Cache inheritance_column. Closes #6592.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5474 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jeremy Kemper
2006-11-09 19:31:31 +00:00
parent 0342393b30
commit 9d2da04680
4 changed files with 22 additions and 7 deletions

View File

@@ -1170,7 +1170,7 @@ module ActiveRecord
sql << "GROUP BY #{options[:group]} " if options[:group]
add_order!(sql, options[:order])
add_order!(sql, options[:order], scope)
add_limit!(sql, options, scope) if using_limitable_reflections?(join_dependency.reflections)
return sanitize_sql(sql)

View File

@@ -648,9 +648,10 @@ module ActiveRecord #:nodoc:
key
end
# Defines the column name for use with single table inheritance -- can be overridden in subclasses.
# Defines the column name for use with single table inheritance
# -- can be set in subclasses like so: self.inheritance_column = "type_id"
def inheritance_column
"type"
@inheritance_column ||= "type".freeze
end
# Lazy-set the sequence name to the connection's default. This method
@@ -800,7 +801,7 @@ module ActiveRecord #:nodoc:
# Resets all the cached information about columns, which will cause them to be reloaded on the next request.
def reset_column_information
read_methods.each { |name| undef_method(name) }
@column_names = @columns = @columns_hash = @content_columns = @dynamic_methods_hash = @read_methods = nil
@column_names = @columns = @columns_hash = @content_columns = @dynamic_methods_hash = @read_methods = @inheritance_column = nil
end
def reset_column_information_and_inheritable_attributes_for_all_subclasses#:nodoc:
@@ -1057,7 +1058,7 @@ module ActiveRecord #:nodoc:
# Ignore type if no column is present since it was probably
# pulled in from a sloppy join.
unless self.columns_hash.include?(inheritance_column)
unless columns_hash.include?(inheritance_column)
allocate
else