Hi! I have a legacy table that has a column named "type" and need to remove this automatic subclassing by ActiveRecord. The api pages are vague about this, and I tried self.inheritance_column = "xtype" which seemed to get me half-way. In the validate_on_create method, the value of self.type was my model Class name. How would you disable this feature?
on 2007-03-28 17:34
on 2007-03-28 17:44
> Hi! I have a legacy table that has a column named "type" and need to > remove this automatic subclassing by ActiveRecord. The api pages are > vague about this, and I tried > > self.inheritance_column = "xtype" > > which seemed to get me half-way. In the validate_on_create method, the > value of self.type was my model Class name. > > How would you disable this feature? If you want to check 'type' do self['type']..
on 2007-03-29 04:26
The short answer is that you can not disable this. The 'type' method is a Ruby method for the class of an object. As stated by Philip you can access the 'type' column data by directly indexing the active record. You can also create a facade by having methods on the class that retrieve the 'type' column using a different name as in: def legacy_type return self[:type] end def legacy_type=(value) self[:type] = value end Michael On Mar 28, 8:34 am, Allen Fair <rails-mailing-l...@andreas-s.net>
on 2013-02-19 01:01
MichaelLatta wrote in post #227241:
> The 'type' method is a Ruby method for the class of an object.
This is not a Ruby method. This is part of ActiveRecord, and is used by
Rails to manage single-table inheritance.
I'm adding a solution for future askers. This applies to Rails 3:
class ExampleModel < ActiveRecord::Base
set_inheritance_column do
'disabled'
end
end
This changes the name of the column that ActiveRecord looks for, to use
for STI. As long as you pick something that doesn't actually match any
of your column names, it has the effect of disabling inheritance
altogether.
on 2013-02-19 14:49
On Feb 18, 2013, at 7:01 PM, Jaime B. wrote: > MichaelLatta wrote in post #227241: >> The 'type' method is a Ruby method for the class of an object. > > This is not a Ruby method. This is part of ActiveRecord, and is used by > Rails to manage single-table inheritance. While it is true that 'type' is not a method in Ruby 1.9, it was in earlier versions: irb1.8.7> 1.type (irb):1: warning: Object#type is deprecated; use Object#class #1.8.7 => Fixnum It is something to keep in mind whenever looking at older code. -Rob
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.