On model update nil column values become empty string
Opened this issue · 1 comments
First, thanks for the great gem! This has been a lifesaver for me and my team.
I do have a small issue. I am happy to do the work but unsure what is the best way to move forward.
When updating db records via rails_db
, text fields with original nil
values are changed to ''
even when they are not updated. I have been digging into the code and I noticed this is kind of expected because simple_form
cannot distinguish between an actual empty string and a nil
value but unfortunately this is an issue for any column that has a unique index OR if there is any code that needs to do different things with ''
and nil
.
I can see 2 potential solutions to this
- Allow for more complex blacklisting or whitelisting of tables and specific columns. This would make these columns not show on the edit form and never override the values. The clear downside is that the user is forever limited to view or edit these columns
- Add better casting from
ActiveRecord::Base.connection
to an actual model and allow usage of things like https://github.com/rubiety/nilify_blanks - Override the
update
action of the controller and clean up some params that are problematic when empty
If someone has experienced the same issue or has any idea it would be great to hear how they fixed this. Until this is solved we cannot use the edit function of the Rails_db
😢
Hello @gabceb,
thank you for your issue, and I hope you can try to make a fix.
https://github.com/igorkasyanchuk/rails_db/blob/master/lib/rails_db/table.rb#L51-L56
maybe here if you can add something, before_save callback, or anything like that. But I want to avoid the situation when a field with ''
will be set to NULL
because of this change.
Or blacklisting some columns as you said. I've already implemented it for tables. But for columns, I think a new configuration could be added.