I've got a form for editing a model called Property. Property has two
fields, web_color and thumbnail_path, that are nil by default, and the
model has some behaviour to generate defaults for them when nil, which
is the usual case.
When the form is submitted, the text fields for these attributes come
through as empty strings, and so these attributes are changed to be
empty strings instead of nil.
I can think of some hacky ways to stop this, such as doing something
like this in the controller:
params[:property][:web_color] = nil if
params[:property][:web_color].blank?
But, it would be better if this behaviour lived in the model. One way
would be to set up a before_save callback like this:
before_save :set_nils
def set_nils
self.web_color = nil if self.web_color.blank?
self.thumbnail_path = nil if self.thumbnail_path.blank?
end
But, this feels kind of hacky and i'd like a cleaner way. Can anyone
show me one?
BTW, this seems like the sort of behaviour that one might want to have
quite often in a model, to prevent form submission from changing 'nil'
to "". Maybe i'll put it into a macro, i'll post up my code here if i
do.
BTW, this seems like the sort of behaviour that one might want to have
quite often in a model, to prevent form submission from changing 'nil'
to "". Maybe i'll put it into a macro, i'll post up my code here if i
do.
I don't recall the name, but there is a plugin on agilewebdevelopment.com/plugins that does this automatically.
This may have been it... looks like it will do what you want in any case.
BTW, this seems like the sort of behaviour that one might want to have
quite often in a model, to prevent form submission from changing 'nil'
to "". Maybe i'll put it into a macro, i'll post up my code here if i
do.
I don't recall the name, but there is a plugin on
agilewebdevelopment.com/plugins that does this automatically.
This may have been it... looks like it will do what you want in any
case.