- has_value :start_date, :default => {Date.today} - has_value :price, :default => 50, :extend => MoneyFormatter class SomeSearchThing < Valuable has_value :dob has_value :sign parser_for( dob ) do |input| Date.parse(input) end end class Datum < Valuable has_index :by_name has_list :calculations end -or- class Datum < Valuable lists :calculations indexes :by_name end BEST PRACTICES DOC When creating a searcher: class UserSearcher < Valuable has_value :age has_value :query has_value :expertise has_value :eye_color def conditions [ eye_color_conditions, name_conditions, ... ].compact.join(' OR ') end end - Rails 3 support - Add Valuable#to_yaml and Valuable.from_yaml - make it easy to include validatable or ActiveRecord::Validations - make it easy to use has_value from activerecord model. - add optional :always_klass ? - for :klass => :integer, 'abc' resolves to 0 ... fix that. - optionally, values should be on the class rather than the instance, as in: Config < ValuableClass has_value :background_color end Config.background_color - 2. Create a 'Valuable::Presenter' base class that filters out rails params, handles nested params, knows 0 is false for checkboxes, works with form_for#checkbox... class ProductsController < ApplicationController def reviews @presenter = ReviewPresenter.new(params) @product = @presenter.product @reviews = @presenter.reviews end end which currently raises: undefined method `action=' for # like this: def initialize(atts = {}) super(atts.except('action', 'controller')) end what about has_value :number, :construct => 'Decimal#parse' - do a better job with method_missing