Method or controller?

I wish to allow users to view collections of foreign currency exchange
(forex) rates in the following manners:

  1. All currencies, only the most current forex rate.

and

  1. One currency, the N most recent rates.

I seem to have several choices here:

A. Use the controller for the rates model and use the index method for
case 1 and the show method for case 2.

B. Use the controller for the rates model and use the index method for
case 1 and create a new method, current, for case 2.

C. Use two controllers and use the index method in the controller for
the rates model (forex_rates_controller) to list all currencies and all
rates, which is generally the default index behavior; while in the
second (current_forex_rates_controller) use index and show as specified
in alternative A.

Are there any strong preferences for going one way over the other?

I am having difficulty understanding the problem, not knowing about
forex
rates. Could you explain the model structure? I know that controllers
do
not need to map to models but I think it will help me to understand the
structure.

Colin

2009/5/25 James B. [email protected]

Colin L. wrote:

I am having difficulty understanding the problem, not knowing about
forex rates. Could you explain the model structure?

NP.

There is but one model involved. It contains a collection of currency
pairs (CAD/USD, CAD/GBP, CAD/JPY, etc.) with specific dates and the
exchange rate in effect on that date. So

forex.base
forex.quote
forex.date
forex.rate

A given pair and date only occurs once in the table (composite unique
index).

Standard Rails convention has the index action returning all rates for
all currency pairs. This is probably not much use in this application.
The show action returns a specific rate for a specific pair and date.
This is probably useful as is.

Users are typically interested in two additional view: The most recent
N rates for a specific currency pair; and the rates for all currency
pairs on a specific date.

Have you considered having a currencies controller? The fact that you
talk
about currencies suggests that they may the principle resource of
interest
to the user, even though they do not directly map to a model. The index
method would then show all currencies, possibly with a parameter(s) to
indicate whether the most recent rates for each currency should be
shown,
the rates at a particular date, the rate against another particular
currency
or whatever. The show method would show information for just one
currency,
again parametrised if necessary.

Colin

2009/5/25 James B. [email protected]