App Configuration Setting

What is the best way to allow site-wide setting to be changed?

For example, an admin user could be able to set the site theme, the number of images shown on the landing page, the title of the app, greeting given etc.

Solutions I can think of are: Database Solution

I use http://agilewebdevelopment.com/plugins/application_config for things that won't change frequently... api keys, etc...

Other times I've created a Preference model with key/value attributes and they can edit that...

-philip