July 13, 2020 ( last updated : July 13, 2020 )
ruby
active-record
type
for object inheritanceTaken from the docs:
Active Record allows inheritance by storing the name of the class in a column that by default is named “type” (can be changed by overwriting Base.inheritance_column)
For example, when you have classes that look like this:
class Person < ActiveRecord::Base; end
class Child < Person; end
and create a child object
Child.create(name: 'Billy')
Active Record stores the value "Child"
in billy’s type
column. Then we can retrieve Billy
Person.where(name: 'Billy')
Active Record will use the value in type
to return an object of type Child
.
remove_column
needs a type
to be used in a change
block.The method signature for Active Record’s remove_column
method looks like this:
remove_column(table_name, column_name, type = nil, options = {})
type
and options
are optional params that will be added to the add_column
call if the migration is reversed. Neat.