Create a helper for models and views?

Hi!

If I have a method that is useful in both models and in views, where
would
be the appropriate place to put it?

The method in question just takes two dates as strings, tries to parse
them
and returns all dates in the range between them. It also takes care of
the
issues when the dates are badly formatted etc etc…

This method is being used in several models (so a simple class method in
one model doesn’t seem appropriate) and also in some view helpers.

So, where does this method belong in rails?

And actually, it is used in my controllers as well :slight_smile:

Den sndagen den 3:e februari 2013 kl. 13:23:28 UTC+1 skrev Linus
Pettersson:

On Sun, Feb 3, 2013 at 6:23 AM, Linus P.
[email protected] wrote:

If I have a method that is useful in both models and in views, where would
be the appropriate place to put it?

config/initializer/preload_helpers.rb

require “my_app/my_helper”

lib/my_app/my_helper.rb →

module MyHelper
module_function
def helper
puts “win”
end
end

app/helpers/application_helpers.rb →

class ApplicationHelpers
include MyHelper
end

app/models/my_model.rb →

class MyModel < ActiveRecord::Base
include Myhelper
end

The method in question just takes two dates as strings, tries to parse them
and returns all dates in the range between them. It also takes care of the
issues when the dates are badly formatted etc etc…

This method is being used in several models (so a simple class method in one
model doesn’t seem appropriate) and also in some view helpers.

So, where does this method belong in rails?

Read Above.

Additionally, you can put it inside its own class and use that as
necessary.
It’d be similar to the previous answer, but instead of including that
behaviour, you’d get an instance of that class and pass in the strings
either in #initialize or the method you use to parse and call that
method.

~Spaceghost

On Sun, Feb 3, 2013 at 8:36 AM, Johnneylee Rollins
[email protected] wrote:

On Sun, Feb 3, 2013 at 6:23 AM, Linus P.

include MyHelper

them
Read Above.
Sounds to me like this would be better as a gem, since it seems to be
completely independent of the application (and probably have much
broader use!)