postgres default values don't work with active record

Activerecord sets the columns that are not specified to NULL. Postgres presumes that since your insert statement said to set the column to null you meant to set it null and ignores the default. Is there a way to tell activerecord not set missing attributes to null?

Thanks.

Activerecord sets the columns that are not specified to NULL. Postgres presumes that since your insert statement said to set the column to null you meant to set it null and ignores the default. Is there a way to tell activerecord not set missing attributes to null?

I don't think so - I think activerecord is expecting to be able to read the default values out of the database schema, although that assumes that the default is some fixed value. It should be possible to do something like this though, since updates only write unchanged columns.

Fred

Activerecord sets the columns that are not specified to NULL. Postgres presumes that since your insert statement said to set the column to null you meant to set it null and ignores the default. Is there a way to tell activerecord not set missing attributes to null?

This might be useful. GitHub - FooBarWidget/default_value_for: Provides a way to specify default values for ActiveRecord models

I don't think so - I think activerecord is expecting to be able to read the default values out of the database schema, although that assumes that the default is some fixed value. It should be possible to do something like this though, since updates only write unchanged columns.

In postgres sometimes the default values are functions like for example UUID fields. It would work fine if it sent DEFAULT instead of NULL for the missing fields and of course it could just not mention them either.

I was wondering if there is a flag somewhere in AR that says "Don't send NULLs for missing attributes" or something.

Tim Uckun wrote in post #1015220:

I don't think so - I think activerecord is expecting to be able to read the default values out of the database schema, although that assumes that the default is some fixed value. It should be possible to do something like this though, since updates only write unchanged columns.

In postgres sometimes the default values are functions like for example UUID fields. It would work fine if it sent DEFAULT instead of NULL for the missing fields and of course it could just not mention them either.

I was wondering if there is a flag somewhere in AR that says "Don't send NULLs for missing attributes" or something.

Hi,

Were there any updates on this? I'm facing the same problem. Any solution?

Regards