денежный камень: наследовать валюту от родительской модели - PullRequest
0 голосов
/ 13 июля 2011

Может кто-нибудь сказать мне, как унаследовать валюту от родительской модели?

Я использую драгоценный камень (https://github.com/RubyMoney/money) и имею 2 модели (market и tradelimit).

Рыночная цена обновляется в периодическом издании, и если есть торговый лимит, который имеет ту же цену, пользователь становится информированным.

Поскольку на рынке уже есть сохраненная валюта, я не хочу хранить ее снова вМодель tradelimit (не сухая):

class Market << AR
  composed_of :price,
    :class_name => "Money",
    :mapping => [%w(price_cents cents), %w(currency currency_as_string)],
    :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) },
    :converter => Proc.new { |value|  value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError, "Can't convert #{value.class} to Money") }
  ...
end

#tradelimit.rb

class Tradelimit << AR
  composed_of :price,
    :class_name => "Money",
    :mapping => [%w(price_cents cents), %w(currency currency_as_string)],
    :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) },
    :converter => Proc.new { |value|  value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError, "Can't convert #{value.class} to Money") }
  ...
end

Как теперь я могу унаследовать валюту от родительской (рыночной) модели? Я пытался переопределить метод валюты в модели tradelimit, но эта работа не работает ..

Есть какие-нибудь предложения? Спасибо!

РЕДАКТИРОВАТЬ:

Или есть способ (без функции Comme_of), чтобы обеспечить эту функцию?

1 Ответ

0 голосов
/ 13 июля 2011

Вы пробовали:

class Market < AR
  #use Money as a mixin
  include Money
...

end

#Now Tradelimit should inherit all from Market
class Tradelimit <  Market
...