acts_as_hash ?

here's what I want to do:

class Foo < ActiveRecord::Base     has_many :bars end

class Bar < ActiveRecord::Base     belongs_to :foo     acts_as_hash :scope => :foo_id, :key => :keycolumn end

foo = Foo.find(...) bar = foo.bars['my_key']

Is there an existing acts_as_hash plugin, or any other good way to do this?

Brian, hello first,

here's what I want to do:

class Foo < ActiveRecord::Base     has_many :bars end

class Bar < ActiveRecord::Base     belongs_to :foo     acts_as_hash :scope => :foo_id, :key => :keycolumn end

foo = Foo.find(...) bar = foo.bars['my_key']

Is there an existing acts_as_hash plugin, or any other good way to do this?

I'm not sure to understand well what you want to do, but if you want given a foo record, from the collection of bars associated with, to retrieve one with a given condition, you can do sth like that (using association extensions) :

class Foo < AR::B   has_many :bars do     def (key)       find(:first, :conditions => ['my_column = ?', key.to_s])     end   end end

then bar = foo.bars['hello'] will be the record with foo_id = foo.id and my_column = 'hello'.

hope it helps,

   -- Jean-François.

Here is a little DbHash model I have used in the past. You could add a foreign key to it so it works with your relationship.

class DbHash < ActiveRecord::Base    class << self      def (key)        pair = find_by_key(key.to_s)        pair.value unless pair.nil?      end

     def =(key, value)        pair = find_by_key(key)        unless pair          pair = new          pair.key, pair.value = key.to_s, value          pair.save        else          pair.value = value          pair.save        end        value      end

     def to_hash        Hash[ *find_all.map { |pair| [pair.key, pair.value] }.flatten ]      end    end end

     create_table "db_hashes", :force => true do |t|        t.column "key", :string, :limit => 40, :default => "", :null => false        t.column "value", :string, :default => ""      end

-EZra