for logging: http://pastie.org/1843979

On May 4, 11:35 am, Chris Corbyn <[email protected]> wrote:
> Hi,
>
> I'm new to DataMapper but have found myself using it as I port a PHP
> application to Rails, which has a completely un-rails-like schema.
>
> My understanding is that DataMapper will only update:
>
> a) Fields that it knows about (i.e. ones I've defined as properties)
> b) Dirty values (i.e. it won't rewrite potentially) stale data
>
> I have defined a Model class for User, just to test this, which
> contains just a handful of the 80 or so columns in the database.
>
> class User
>         include DataMapper::Resource
>
>         storage_names[:default] = :user
>
>         property :id,              Serial,   :field => 'userid', :key => true
>         property :username,        String
>         property :email,           String
>         property :activated,       Boolean,  :field =>
> 'isactivated', :default => false
>         property :full_name,       String,   :field => 'fullname', :default
> => ''
>         property :password_hash,   String,   :field =>
> 'passwordhash', :default => ''
>         property :password_salt,   String,   :field => 'salt', :default => ''
>         property :updated_at,      EpochTime,  :field => 'timemodified'
>         property :logged_in_at,    EpochTime,  :field => 'timelastlogin'
>         property :banned,          Boolean,  :field => 'isbanned', :default
> => false
> end
>
> Now, I can perform read operations quite happily, which got me all
> excited, but then I tried the next logical thing: create a new user.
>
> new_user = User.new
> new_user.username = 'vssavfvabf'
> new_user.email = '[email protected]'
> new_user.full_name = 'Testing'
> new_user.save
>
> This throws the Exception:
>
> DataObjects::SQLError "Field 'activationcode' doesn't have a default
> value"
>
> Our schema is huge and it pains me to think I may have to work through
> it setting default values for each of the fields that don't have them
> (which is almost all of them, since we just let MySQL set zero or an
> empty string, or NULL if permitted).
>
> But that aside, why is DM even touching this field?  Or if it's not,
> what is actually happening and how can I work around it?  I know the
> insert will work just fine without specifying a value, since MySQL
> will just use an empty string as a fallback.  I'd rather not expressly
> set all the defaults if I can avoid it, since this is an old legacy
> application that has grown into a big hairy beast.  If I was designing
> a new schema for a new app I'd not even think twice about it and move
> on, but alas... :)
>
> Any pointers?
>
> Cheers,
>
> Chris
>
> PS: Can I turn something on so that all the queries being executed are
> output or written to a log or some such, for quick and dirty debugging?

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en.

Reply via email to