Does anyone know of a plugin to "deprecate" a column so active record won''t try and save the column back to the DB? This would allow the old column to eventually be dropped without having to take down your site or stop mysql replication. For example: On day 1 you have: CREATE TABLE users ( id int not null auto_increment primary key, name varchar(255), location varchar(255) ); On day 2 you have lots of INSERT INTO users statements being sent to DB1 and replicated to DB2. You try and "ALTER TABLE users DROP COLUMN location" but now all these insert statements start to fail because they still reference the location column. We need active record to pretend location is no longer there on insert and updates. Otherwise we''d have to stop the site and replication and wait for the drop column command to complete. Could be hours on a large table. Thanks. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> Does anyone know of a plugin to "deprecate" a column so active record > won''t try and save the column back to the DB? This would allow the old > column to eventually be dropped without having to take down your site or > stop mysql replication. For example:You may be able to modify this plugin... it says it does half of what you want.. (the save part, not the create part): http://www.railsify.com/plugins/61-validates-constancy -philip> > On day 1 you have: > > CREATE TABLE users ( > id int not null auto_increment primary key, > name varchar(255), > location varchar(255) > ); > > On day 2 you have lots of INSERT INTO users statements being sent to DB1 > and replicated to DB2. > > You try and "ALTER TABLE users DROP COLUMN location" but now all these > insert statements start to fail because they still reference the > location column. > > We need active record to pretend location is no longer there on insert > and updates. Otherwise we''d have to stop the site and replication and > wait for the drop column command to complete. Could be hours on a large > table. > > Thanks. > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Philip Hallstrom wrote:> You may be able to modify this plugin... it says it does half of what > you > want.. (the save part, not the create part): > > http://www.railsify.com/plugins/61-validates-constancy > > -philipLooking at the code I think all it does is make sure the values are == equal. The "update users set name=''bob'', location=''123''" still gets sent to the db. If I validate constancy of the location field, it''ll make sure it''s still 123 but still send the same sql. I need the sql to be: "update users set name=''bob''" with no metion of the location column at all. I''ll try and write a new plugin that lets you do this: class User < ActiveRecord::Base deprecate :location end -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
oh, it''s actually this simple: class User < ActiveRecord::Base def attributes(options = nil) temp = super temp.delete(''location'') temp end end -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---