如何使选择内容成为Rails模型的属性

时间:2012-04-16 21:39:53

标签: ruby-on-rails ruby model attributes

我很难制定我想回答的问题,所以这是我的情况:

我正在尝试使用我在其他地方填充的现有数据库制作一个简单的股市绘图工具。我的应用程序已经拥有一个适用于任何数据库的漂亮且动态的绘图仪,但它以某种方式期望数据。所以说我的模型(数据库)看起来像这样:

Stock:

|___ticker___|___open___|___close___|___date___|
|    aapl    |   100    |   101     | 1/1/11   |
|    aapl    |   101    |   102     | 1/2/11   |
|    goog    |   500    |   450     | 1/1/11   |
|    goog    |   450    |   451     | 1/2/11   |
...

我的绘图仪例程使用类属性(我认为这是术语),它们对应于数据库中的列。

我可以选择与'aapl'对应的所有数据,并轻松绘制openclosedate之间的关系,因为我的模型已经说过归因。

@stock = Stock.select_by_ticker('aapl')
>> @stock.open  #=> 100 ...
>> @stock.close #=> 101 ...
>> @stock.date  #= 1/1/11 ...

所以属性是

{open, close, date}

但如果我想比较不同股票的收盘价,我需要与每只股票有关的属性。所以基本上我想最终得到一个带有自动收报机名称作为属性的模型,每个模型对应于数据库中的自动收报机的块。使用易于构建的范围,我想要类似的东西:

@stock = Stock.select_close_by_ticker('aapl','goog') 

属性是:

{aapl, goog, date}

其中aapl和goog包含该股票代码的收盘价数据。如果需要,我可以运行多个数据库查询,现在我只想将数据排序到这个表单中。此外,它必须是完全动态的,因此我无法将'aapl''goog'以及所有数百万其他代码硬编码到我的模型中。

1 个答案:

答案 0 :(得分:0)

会是这样的:

stocks = ['appl', 'goog']
Stock.find(:conditions => ['ticker in (?)'], stocks)

适用于您的方案吗?