Manuel Vidaurre
2008-Jun-04 10:49 UTC
Suggestions for adding a new abstract data type to AR using a composed_of
Hello everybody, I had been searching the web but I can’t find a way to add a new abstract data type to AR using a composed_of. To put this in context let me explain what I want to do: In a rails app I had developed a Money Class that use to attr :amount, :currency. I had add functionality to have Factories for creating Money in different currencies, arithmetical operations, comparisons, and several financial calculations (interest, expected values, amortized payments, etc.) . I had been using this in my models as composed_of :price_money, :class_name => Money, :mapping => [ # database ruby [ :price, :amount ], [ :currency, :currency ] ] I have also a Bank Class were I kept the exchange rates among currencies After talking in RailsConf2008 with several railers they told me that will be good if I can deploy this as a plugin or a gem. I had been working in extracting this as a plugin, but I would like to be able to add a new abstract data type to AR for money, then we can use in migrations something like this as example: create_table "prices", :force => true do |t| t.money "price", :precision => 16, :scale => 4. :default_currency => "USD" end Rather than create_table "prices", :force => true do |t| t.decimal "price", :precision => 16, :scale => 4 t.string "currency", :limit => 3, :default => "USD", :null => false end And get out also the need for the composed_of declaration. I will appreciate very much any suggestion how to tackle this. Best regards, Manuel Vidaurre --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---