hi!
im wondering what is a best practice for some design question i have
right now.
i have a template class, presenting a template in a cms application. the
template has a eruby file, which contain helper methods like
editable_content('some_type', 'some_name')
the helper methods like editable_content are defined in my template class.
now comes the real question: the helper methods can be used in two
ways creating the objects which represent the editable_content (and saving
it as a active record) and during the rendering, where the editable_content
method will fill in the real content.
to me it feels kinda bloated to implement both tasks in one class, thats why
i would like to extract the rendering part into another class.
whats the best practice for this in ruby?
would i just create something like:
MyRenderingTemplateClass.new(my_template_object).render
basically a decorator, where i also redefine the editable_content method
of the my_template_object, so i can use its normal parsing methods?
thanks a lot for any tip!
ciao!
florian
I would protect the data in a class designed primarily to save/load from an
"active record" (whatever that is in your program). I would create a public
initializer for the class so it can be created at any time, and I would give
it a save method for saving. I would create a class factory method for the
load function, and a public global method for rendering:
class MyClass
def initialize
end
def save
end
def MyClass::load(record_id)
return new_myclass_instance
end
end
def render_myclass(myclass_instance)
end
The render method might have a better home, but from what I could gather from
your post, a simple public method should do fine. I'm not sure what sort of
data you are dealing with, but if you can present it as a hash, with named
keys and such, you might also provide a method and have the render method
simply treat its parameter like a hash; try to make it generic, so you can
test it disconnected from the class itself, or possibly re-use it elsewhere.
Sean O'Dell
ยทยทยท
On Thursday 08 July 2004 03:48, Florian Weber wrote:
the helper methods like editable_content are defined in my template
class.
now comes the real question: the helper methods can be used in two
ways creating the objects which represent the editable_content (and
saving
it as a active record) and during the rendering, where the
editable_content
method will fill in the real content.
would i just create something like:
MyRenderingTemplateClass.new(my_template_object).render