Is it possible to set default value in a migration based upon another field's value?

I’m familiar with setting a field’s default in the create_table within
a migration via :default => some value. However, what I’m looking for
is to be able to set the default value based upon the value from a
different field/column. I’m not sure if this is possible or not, so
any help would be greatly appreciated. The exact scenario is that I’m
using devise for my authentication and I’ve extended it to have a
login_id field in addition to the email field. I’d like to default it
to the value of the email field when the user first creates their
account and they can later choose to change its value if they decide
they would rather use some value other than their email address. I
know I can override the controller that devise uses to set this value,
but I’m trying to see if I have any options that will not require me
to create an overridden controller.

Thanks in advance for any guidance and help.

Chris

On Aug 16, 2010, at 3:18 PM, Chris wrote:

know I can override the controller that devise uses to set this value,
but I’m trying to see if I have any options that will not require me
to create an overridden controller.

Thanks in advance for any guidance and help.

Chris

Perhaps you can use a before_create callback on the user (account?)
model.

class User
before_create :default_login_id

private
def default_login_id
self.login_id ||= self.email
end
end

-Rob

Rob B.
[email protected] http://AgileConsultingLLC.com/
[email protected] http://GaslightSoftware.com/

On Mon, Aug 16, 2010 at 2:18 PM, Chris [email protected] wrote:

I’m familiar with setting a field’s default in the create_table within
a migration via :default => some value. However, what I’m looking for
is to be able to set the default value based upon the value from a
different field/column. I’m not sure if this is possible or not, so
any help would be greatly appreciated.

You can put active record code into a migration:

default = Model.find(:first).name rescue nil

:default => default


Greg D.
destiney.com | gregdonald.com