mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Deprecate set_inheritance_column in favour of self.inheritance_column=
This commit is contained in:
parent
0b72a04d0c
commit
34609d67b4
5 changed files with 48 additions and 24 deletions
|
@ -1,12 +1,18 @@
|
||||||
## Rails 3.2.0 (unreleased) ##
|
## Rails 3.2.0 (unreleased) ##
|
||||||
|
|
||||||
* Deprecated `set_table_name`. Use `self.table_name=` instead, or define your own
|
* Deprecated:
|
||||||
`self.table_name` method:
|
|
||||||
|
* `set_table_name`
|
||||||
|
* `set_inheritance_column`
|
||||||
|
|
||||||
|
Use an assignment method instead. For example, instead of `set_table_name`, use `self.table_name=`:
|
||||||
|
|
||||||
class Project < ActiveRecord::Base
|
class Project < ActiveRecord::Base
|
||||||
self.table_name = "project"
|
self.table_name = "project"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Or define your own `self.table_name` method:
|
||||||
|
|
||||||
class Post < ActiveRecord::Base
|
class Post < ActiveRecord::Base
|
||||||
def self.table_name
|
def self.table_name
|
||||||
"special_" + super
|
"special_" + super
|
||||||
|
|
|
@ -702,10 +702,36 @@ module ActiveRecord #:nodoc:
|
||||||
(parents.detect{ |p| p.respond_to?(:table_name_prefix) } || self).table_name_prefix
|
(parents.detect{ |p| p.respond_to?(:table_name_prefix) } || self).table_name_prefix
|
||||||
end
|
end
|
||||||
|
|
||||||
# Defines the column name for use with single table inheritance. Use
|
# The name of the column containing the object's class when Single Table Inheritance is used
|
||||||
# <tt>set_inheritance_column</tt> to set a different value.
|
|
||||||
def inheritance_column
|
def inheritance_column
|
||||||
@inheritance_column ||= "type"
|
if self == Base
|
||||||
|
'type'
|
||||||
|
else
|
||||||
|
defined?(@inheritance_column) ? @inheritance_column : superclass.inheritance_column
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Sets the value of inheritance_column
|
||||||
|
def inheritance_column=(value)
|
||||||
|
@inheritance_column = value.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_inheritance_column(value = nil, &block) #:nodoc:
|
||||||
|
if block
|
||||||
|
ActiveSupport::Deprecation.warn(
|
||||||
|
"Calling set_inheritance_column is deprecated. If you need to lazily evaluate " \
|
||||||
|
"the inheritance column, define your own `self.inheritance_column` class method. You can use `super` " \
|
||||||
|
"to get the default inheritance column where you would have called `original_inheritance_column`."
|
||||||
|
)
|
||||||
|
|
||||||
|
define_attr_method :inheritance_column, value, &block
|
||||||
|
else
|
||||||
|
ActiveSupport::Deprecation.warn(
|
||||||
|
"Calling set_inheritance_column is deprecated. Please use `self.inheritance_column = 'the_name'` instead."
|
||||||
|
)
|
||||||
|
|
||||||
|
self.inheritance_column = value
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Lazy-set the sequence name to the connection's default. This method
|
# Lazy-set the sequence name to the connection's default. This method
|
||||||
|
@ -720,20 +746,6 @@ module ActiveRecord #:nodoc:
|
||||||
default
|
default
|
||||||
end
|
end
|
||||||
|
|
||||||
# Sets the name of the inheritance column to use to the given value,
|
|
||||||
# or (if the value # is nil or false) to the value returned by the
|
|
||||||
# given block.
|
|
||||||
#
|
|
||||||
# class Project < ActiveRecord::Base
|
|
||||||
# set_inheritance_column do
|
|
||||||
# original_inheritance_column + "_id"
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
def set_inheritance_column(value = nil, &block)
|
|
||||||
define_attr_method :inheritance_column, value, &block
|
|
||||||
end
|
|
||||||
alias :inheritance_column= :set_inheritance_column
|
|
||||||
|
|
||||||
# Sets the name of the sequence to use when generating ids to the given
|
# Sets the name of the sequence to use when generating ids to the given
|
||||||
# value, or (if the value is nil or false) to the value returned by the
|
# value, or (if the value is nil or false) to the value returned by the
|
||||||
# given block. This is required for Oracle and is useful for any
|
# given block. This is required for Oracle and is useful for any
|
||||||
|
|
|
@ -1495,13 +1495,18 @@ class BasicsTest < ActiveRecord::TestCase
|
||||||
k = Class.new( ActiveRecord::Base )
|
k = Class.new( ActiveRecord::Base )
|
||||||
k.inheritance_column = "foo"
|
k.inheritance_column = "foo"
|
||||||
assert_equal "foo", k.inheritance_column
|
assert_equal "foo", k.inheritance_column
|
||||||
k.set_inheritance_column "bar"
|
|
||||||
|
assert_deprecated do
|
||||||
|
k.set_inheritance_column "bar"
|
||||||
|
end
|
||||||
assert_equal "bar", k.inheritance_column
|
assert_equal "bar", k.inheritance_column
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_set_inheritance_column_with_block
|
def test_set_inheritance_column_with_block
|
||||||
k = Class.new( ActiveRecord::Base )
|
k = Class.new( ActiveRecord::Base )
|
||||||
k.set_inheritance_column { original_inheritance_column + "_id" }
|
assert_deprecated do
|
||||||
|
k.set_inheritance_column { original_inheritance_column + "_id" }
|
||||||
|
end
|
||||||
assert_equal "type_id", k.inheritance_column
|
assert_equal "type_id", k.inheritance_column
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -236,11 +236,11 @@ class InheritanceTest < ActiveRecord::TestCase
|
||||||
c.save
|
c.save
|
||||||
end
|
end
|
||||||
[ Company, Firm, Client].each { |klass| klass.reset_column_information }
|
[ Company, Firm, Client].each { |klass| klass.reset_column_information }
|
||||||
Company.set_inheritance_column('ruby_type')
|
Company.inheritance_column = 'ruby_type'
|
||||||
end
|
end
|
||||||
def switch_to_default_inheritance_column
|
def switch_to_default_inheritance_column
|
||||||
[ Company, Firm, Client].each { |klass| klass.reset_column_information }
|
[ Company, Firm, Client].each { |klass| klass.reset_column_information }
|
||||||
Company.set_inheritance_column('type')
|
Company.inheritance_column = 'type'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class Parrot < ActiveRecord::Base
|
class Parrot < ActiveRecord::Base
|
||||||
set_inheritance_column :parrot_sti_class
|
self.inheritance_column = :parrot_sti_class
|
||||||
|
|
||||||
has_and_belongs_to_many :pirates
|
has_and_belongs_to_many :pirates
|
||||||
has_and_belongs_to_many :treasures
|
has_and_belongs_to_many :treasures
|
||||||
has_many :loots, :as => :looter
|
has_many :loots, :as => :looter
|
||||||
|
|
Loading…
Reference in a new issue