So I have this form with >10 fields on it. When the form is submitted,
the corresponding controller action calls the class method #filtered_properties to process the data.
I’ve created separate class methods for processing each parameter,
which #filtered_properties
calls. However, #filtered_properties is still 120 lines long. This is
because each “section” that processes a param is 10 lines long. Each
of these “sections” is different in one or two ways, but they’re all
extremely similar.
Might you have any suggestions for how to make #filtered_properties
more DRY and/or shorter?: http://pastie.org/299720
I can’t imagine a reason why these methods are class and not instance
methods, could you please explain a litle bit more about your idea,
your model and your controller and what do you really want with these
filter_property methods?
You get all active record validations, active record error handling
and instead of doing it in an ugly class method that looks like a
“function” you can have your Property instance to generate the SQL
code you’re generating now in the class methods.
I can’t imagine a reason why these methods are class and not instance
methods, could you please explain a litle bit more about your idea,
your model and your controller and what do you really want with these
filter_property methods?
Hi Maurício. They’re class methods because they don’t rely upon an
instance of the Property model. They’re for finding properties that
match the search criteria submitted by the user.
Here’s how it works:
A user browses to /neighbourhoods/1/map/ . A Google Map is
displayed, and properties within that neighbourhood are plotted on the
map.
There’s a form that allows the user to filter which properties are
plotted on the map. For example, they can filter based on the:
-number of bedrooms;
-number of bathrooms;
-min or max price;
-etc.
When the user submits the form, the “map_filter” neighbourhood
action is called, which uses Property#filtered_properties to determine
which properties match the user’s search criteria.
Property#filtered_properties calls the #filtered_X class method
that corresponds to each form field value. When #filtered_properties
finishes processing each form field value, it checks to see if an
error occured, and returns an appropriate value (IE: either the error
messages, or the properties that match the search criteria).
I hope that explains things a bit more clearly. Cheers,
Nick
You get all active record validations, active record error handling
and instead of doing it in an ugly class method that looks like a
“function” you can have your Property instance to generate the SQL
code you’re generating now in the class methods.
Wow, that’s a really useful plugin! Thanks for the link, mate. I’m
going to take a serious look at it.
-Nick
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.