I have an “automation” model with some config data. When it runs it
looks
across other models and does some matching, however it also builds up a
list
of “duplicate data” type issues identified as part of the routine.
In terms of how I capture this array of duplicate data issues and pass
to a
view for display what would Rails best practice suggest? For example:
use validation framework (e.g. add_to_base, and then the helper tags
to
display) even though the data is not associated with attributes in the
model
extend an application_error Exception to include an Array
just use an array to pass back to controller, which stores as an
instance
variable (@duplicates) and write custom code to display in view (i.e.
won’t
use error/validation tags)
I suppose I was questioning whether from a best practice position
whether
using Rails input validation framework (focused at the model level), for
collecting non-severe error messages that cut across a whole controller
action (e.g. multiple models may be involved), and for which they are
not
focused at input validation but rather error that occuring during
processing, for the purpose of bundling these up and passing to a view
and
displaying? hope this makes sense in terms of clarifying my Rails best
practice question.
You could always go with the “business logic always goes in models”
rule, and the easy implementation is to do what you’re doing. Or you
could build a brand new model with its own errors collection to
encapsulate what it is you’re doing (presenter pattern?). I don’t
think there’s really a best practice for this… if you can justify
the use to yourself based on what business rules you’re trying to
implement, that may be your best practice.
My rule is always that NOTHING goes in the controller. A lot of times
I’ve done an after_validation callback and shoved stuff into the
errors.base before. Done stuff with cc processing that way too.
I’d love to hear from others on this too.
On Tue, Jan 20, 2009 at 8:13 PM, Greg H.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.